diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.5.0`
+`1.0.0`
 
 
 ## Description
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,3 @@
-import           Distribution.Simple
+import Distribution.Simple
+
 main = defaultMain
diff --git a/gen/Gogol/Sheets.hs b/gen/Gogol/Sheets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets.hs
@@ -0,0 +1,1443 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Reads and writes Google Sheets.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference>
+module Gogol.Sheets
+  ( -- * Configuration
+    sheetsService,
+
+    -- * OAuth Scopes
+    Drive'FullControl,
+    Drive'File,
+    Drive'Readonly,
+    Spreadsheets'FullControl,
+    Spreadsheets'Readonly,
+
+    -- * Resources
+
+    -- ** sheets.spreadsheets.batchUpdate
+    SheetsSpreadsheetsBatchUpdateResource,
+    SheetsSpreadsheetsBatchUpdate (..),
+    newSheetsSpreadsheetsBatchUpdate,
+
+    -- ** sheets.spreadsheets.create
+    SheetsSpreadsheetsCreateResource,
+    SheetsSpreadsheetsCreate (..),
+    newSheetsSpreadsheetsCreate,
+
+    -- ** sheets.spreadsheets.developerMetadata.get
+    SheetsSpreadsheetsDeveloperMetadataGetResource,
+    SheetsSpreadsheetsDeveloperMetadataGet (..),
+    newSheetsSpreadsheetsDeveloperMetadataGet,
+
+    -- ** sheets.spreadsheets.developerMetadata.search
+    SheetsSpreadsheetsDeveloperMetadataSearchResource,
+    SheetsSpreadsheetsDeveloperMetadataSearch (..),
+    newSheetsSpreadsheetsDeveloperMetadataSearch,
+
+    -- ** sheets.spreadsheets.get
+    SheetsSpreadsheetsGetResource,
+    SheetsSpreadsheetsGet (..),
+    newSheetsSpreadsheetsGet,
+
+    -- ** sheets.spreadsheets.getByDataFilter
+    SheetsSpreadsheetsGetByDataFilterResource,
+    SheetsSpreadsheetsGetByDataFilter (..),
+    newSheetsSpreadsheetsGetByDataFilter,
+
+    -- ** sheets.spreadsheets.sheets.copyTo
+    SheetsSpreadsheetsSheetsCopyToResource,
+    SheetsSpreadsheetsSheetsCopyTo (..),
+    newSheetsSpreadsheetsSheetsCopyTo,
+
+    -- ** sheets.spreadsheets.values.append
+    SheetsSpreadsheetsValuesAppendResource,
+    SheetsSpreadsheetsValuesAppend (..),
+    newSheetsSpreadsheetsValuesAppend,
+
+    -- ** sheets.spreadsheets.values.batchClear
+    SheetsSpreadsheetsValuesBatchClearResource,
+    SheetsSpreadsheetsValuesBatchClear (..),
+    newSheetsSpreadsheetsValuesBatchClear,
+
+    -- ** sheets.spreadsheets.values.batchClearByDataFilter
+    SheetsSpreadsheetsValuesBatchClearByDataFilterResource,
+    SheetsSpreadsheetsValuesBatchClearByDataFilter (..),
+    newSheetsSpreadsheetsValuesBatchClearByDataFilter,
+
+    -- ** sheets.spreadsheets.values.batchGet
+    SheetsSpreadsheetsValuesBatchGetResource,
+    SheetsSpreadsheetsValuesBatchGet (..),
+    newSheetsSpreadsheetsValuesBatchGet,
+
+    -- ** sheets.spreadsheets.values.batchGetByDataFilter
+    SheetsSpreadsheetsValuesBatchGetByDataFilterResource,
+    SheetsSpreadsheetsValuesBatchGetByDataFilter (..),
+    newSheetsSpreadsheetsValuesBatchGetByDataFilter,
+
+    -- ** sheets.spreadsheets.values.batchUpdate
+    SheetsSpreadsheetsValuesBatchUpdateResource,
+    SheetsSpreadsheetsValuesBatchUpdate (..),
+    newSheetsSpreadsheetsValuesBatchUpdate,
+
+    -- ** sheets.spreadsheets.values.batchUpdateByDataFilter
+    SheetsSpreadsheetsValuesBatchUpdateByDataFilterResource,
+    SheetsSpreadsheetsValuesBatchUpdateByDataFilter (..),
+    newSheetsSpreadsheetsValuesBatchUpdateByDataFilter,
+
+    -- ** sheets.spreadsheets.values.clear
+    SheetsSpreadsheetsValuesClearResource,
+    SheetsSpreadsheetsValuesClear (..),
+    newSheetsSpreadsheetsValuesClear,
+
+    -- ** sheets.spreadsheets.values.get
+    SheetsSpreadsheetsValuesGetResource,
+    SheetsSpreadsheetsValuesGet (..),
+    newSheetsSpreadsheetsValuesGet,
+
+    -- ** sheets.spreadsheets.values.update
+    SheetsSpreadsheetsValuesUpdateResource,
+    SheetsSpreadsheetsValuesUpdate (..),
+    newSheetsSpreadsheetsValuesUpdate,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** AddBandingRequest
+    AddBandingRequest (..),
+    newAddBandingRequest,
+
+    -- ** AddBandingResponse
+    AddBandingResponse (..),
+    newAddBandingResponse,
+
+    -- ** AddChartRequest
+    AddChartRequest (..),
+    newAddChartRequest,
+
+    -- ** AddChartResponse
+    AddChartResponse (..),
+    newAddChartResponse,
+
+    -- ** AddConditionalFormatRuleRequest
+    AddConditionalFormatRuleRequest (..),
+    newAddConditionalFormatRuleRequest,
+
+    -- ** AddDataSourceRequest
+    AddDataSourceRequest (..),
+    newAddDataSourceRequest,
+
+    -- ** AddDataSourceResponse
+    AddDataSourceResponse (..),
+    newAddDataSourceResponse,
+
+    -- ** AddDimensionGroupRequest
+    AddDimensionGroupRequest (..),
+    newAddDimensionGroupRequest,
+
+    -- ** AddDimensionGroupResponse
+    AddDimensionGroupResponse (..),
+    newAddDimensionGroupResponse,
+
+    -- ** AddFilterViewRequest
+    AddFilterViewRequest (..),
+    newAddFilterViewRequest,
+
+    -- ** AddFilterViewResponse
+    AddFilterViewResponse (..),
+    newAddFilterViewResponse,
+
+    -- ** AddNamedRangeRequest
+    AddNamedRangeRequest (..),
+    newAddNamedRangeRequest,
+
+    -- ** AddNamedRangeResponse
+    AddNamedRangeResponse (..),
+    newAddNamedRangeResponse,
+
+    -- ** AddProtectedRangeRequest
+    AddProtectedRangeRequest (..),
+    newAddProtectedRangeRequest,
+
+    -- ** AddProtectedRangeResponse
+    AddProtectedRangeResponse (..),
+    newAddProtectedRangeResponse,
+
+    -- ** AddSheetRequest
+    AddSheetRequest (..),
+    newAddSheetRequest,
+
+    -- ** AddSheetResponse
+    AddSheetResponse (..),
+    newAddSheetResponse,
+
+    -- ** AddSlicerRequest
+    AddSlicerRequest (..),
+    newAddSlicerRequest,
+
+    -- ** AddSlicerResponse
+    AddSlicerResponse (..),
+    newAddSlicerResponse,
+
+    -- ** AppendCellsRequest
+    AppendCellsRequest (..),
+    newAppendCellsRequest,
+
+    -- ** AppendDimensionRequest
+    AppendDimensionRequest (..),
+    newAppendDimensionRequest,
+
+    -- ** AppendDimensionRequest_Dimension
+    AppendDimensionRequest_Dimension (..),
+
+    -- ** AppendValuesResponse
+    AppendValuesResponse (..),
+    newAppendValuesResponse,
+
+    -- ** AutoFillRequest
+    AutoFillRequest (..),
+    newAutoFillRequest,
+
+    -- ** AutoResizeDimensionsRequest
+    AutoResizeDimensionsRequest (..),
+    newAutoResizeDimensionsRequest,
+
+    -- ** BandedRange
+    BandedRange (..),
+    newBandedRange,
+
+    -- ** BandingProperties
+    BandingProperties (..),
+    newBandingProperties,
+
+    -- ** BaselineValueFormat
+    BaselineValueFormat (..),
+    newBaselineValueFormat,
+
+    -- ** BaselineValueFormat_ComparisonType
+    BaselineValueFormat_ComparisonType (..),
+
+    -- ** BasicChartAxis
+    BasicChartAxis (..),
+    newBasicChartAxis,
+
+    -- ** BasicChartAxis_Position
+    BasicChartAxis_Position (..),
+
+    -- ** BasicChartDomain
+    BasicChartDomain (..),
+    newBasicChartDomain,
+
+    -- ** BasicChartSeries
+    BasicChartSeries (..),
+    newBasicChartSeries,
+
+    -- ** BasicChartSeries_TargetAxis
+    BasicChartSeries_TargetAxis (..),
+
+    -- ** BasicChartSeries_Type
+    BasicChartSeries_Type (..),
+
+    -- ** BasicChartSpec
+    BasicChartSpec (..),
+    newBasicChartSpec,
+
+    -- ** BasicChartSpec_ChartType
+    BasicChartSpec_ChartType (..),
+
+    -- ** BasicChartSpec_CompareMode
+    BasicChartSpec_CompareMode (..),
+
+    -- ** BasicChartSpec_LegendPosition
+    BasicChartSpec_LegendPosition (..),
+
+    -- ** BasicChartSpec_StackedType
+    BasicChartSpec_StackedType (..),
+
+    -- ** BasicFilter
+    BasicFilter (..),
+    newBasicFilter,
+
+    -- ** BasicFilter_Criteria
+    BasicFilter_Criteria (..),
+    newBasicFilter_Criteria,
+
+    -- ** BasicSeriesDataPointStyleOverride
+    BasicSeriesDataPointStyleOverride (..),
+    newBasicSeriesDataPointStyleOverride,
+
+    -- ** BatchClearValuesByDataFilterRequest
+    BatchClearValuesByDataFilterRequest (..),
+    newBatchClearValuesByDataFilterRequest,
+
+    -- ** BatchClearValuesByDataFilterResponse
+    BatchClearValuesByDataFilterResponse (..),
+    newBatchClearValuesByDataFilterResponse,
+
+    -- ** BatchClearValuesRequest
+    BatchClearValuesRequest (..),
+    newBatchClearValuesRequest,
+
+    -- ** BatchClearValuesResponse
+    BatchClearValuesResponse (..),
+    newBatchClearValuesResponse,
+
+    -- ** BatchGetValuesByDataFilterRequest
+    BatchGetValuesByDataFilterRequest (..),
+    newBatchGetValuesByDataFilterRequest,
+
+    -- ** BatchGetValuesByDataFilterRequest_DateTimeRenderOption
+    BatchGetValuesByDataFilterRequest_DateTimeRenderOption (..),
+
+    -- ** BatchGetValuesByDataFilterRequest_MajorDimension
+    BatchGetValuesByDataFilterRequest_MajorDimension (..),
+
+    -- ** BatchGetValuesByDataFilterRequest_ValueRenderOption
+    BatchGetValuesByDataFilterRequest_ValueRenderOption (..),
+
+    -- ** BatchGetValuesByDataFilterResponse
+    BatchGetValuesByDataFilterResponse (..),
+    newBatchGetValuesByDataFilterResponse,
+
+    -- ** BatchGetValuesResponse
+    BatchGetValuesResponse (..),
+    newBatchGetValuesResponse,
+
+    -- ** BatchUpdateSpreadsheetRequest
+    BatchUpdateSpreadsheetRequest (..),
+    newBatchUpdateSpreadsheetRequest,
+
+    -- ** BatchUpdateSpreadsheetResponse
+    BatchUpdateSpreadsheetResponse (..),
+    newBatchUpdateSpreadsheetResponse,
+
+    -- ** BatchUpdateValuesByDataFilterRequest
+    BatchUpdateValuesByDataFilterRequest (..),
+    newBatchUpdateValuesByDataFilterRequest,
+
+    -- ** BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption
+    BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption (..),
+
+    -- ** BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption
+    BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption (..),
+
+    -- ** BatchUpdateValuesByDataFilterRequest_ValueInputOption
+    BatchUpdateValuesByDataFilterRequest_ValueInputOption (..),
+
+    -- ** BatchUpdateValuesByDataFilterResponse
+    BatchUpdateValuesByDataFilterResponse (..),
+    newBatchUpdateValuesByDataFilterResponse,
+
+    -- ** BatchUpdateValuesRequest
+    BatchUpdateValuesRequest (..),
+    newBatchUpdateValuesRequest,
+
+    -- ** BatchUpdateValuesRequest_ResponseDateTimeRenderOption
+    BatchUpdateValuesRequest_ResponseDateTimeRenderOption (..),
+
+    -- ** BatchUpdateValuesRequest_ResponseValueRenderOption
+    BatchUpdateValuesRequest_ResponseValueRenderOption (..),
+
+    -- ** BatchUpdateValuesRequest_ValueInputOption
+    BatchUpdateValuesRequest_ValueInputOption (..),
+
+    -- ** BatchUpdateValuesResponse
+    BatchUpdateValuesResponse (..),
+    newBatchUpdateValuesResponse,
+
+    -- ** BigQueryDataSourceSpec
+    BigQueryDataSourceSpec (..),
+    newBigQueryDataSourceSpec,
+
+    -- ** BigQueryQuerySpec
+    BigQueryQuerySpec (..),
+    newBigQueryQuerySpec,
+
+    -- ** BigQueryTableSpec
+    BigQueryTableSpec (..),
+    newBigQueryTableSpec,
+
+    -- ** BooleanCondition
+    BooleanCondition (..),
+    newBooleanCondition,
+
+    -- ** BooleanCondition_Type
+    BooleanCondition_Type (..),
+
+    -- ** BooleanRule
+    BooleanRule (..),
+    newBooleanRule,
+
+    -- ** Border
+    Border (..),
+    newBorder,
+
+    -- ** Border_Style
+    Border_Style (..),
+
+    -- ** Borders
+    Borders (..),
+    newBorders,
+
+    -- ** BubbleChartSpec
+    BubbleChartSpec (..),
+    newBubbleChartSpec,
+
+    -- ** BubbleChartSpec_LegendPosition
+    BubbleChartSpec_LegendPosition (..),
+
+    -- ** CancelDataSourceRefreshRequest
+    CancelDataSourceRefreshRequest (..),
+    newCancelDataSourceRefreshRequest,
+
+    -- ** CancelDataSourceRefreshResponse
+    CancelDataSourceRefreshResponse (..),
+    newCancelDataSourceRefreshResponse,
+
+    -- ** CancelDataSourceRefreshStatus
+    CancelDataSourceRefreshStatus (..),
+    newCancelDataSourceRefreshStatus,
+
+    -- ** CandlestickChartSpec
+    CandlestickChartSpec (..),
+    newCandlestickChartSpec,
+
+    -- ** CandlestickData
+    CandlestickData (..),
+    newCandlestickData,
+
+    -- ** CandlestickDomain
+    CandlestickDomain (..),
+    newCandlestickDomain,
+
+    -- ** CandlestickSeries
+    CandlestickSeries (..),
+    newCandlestickSeries,
+
+    -- ** CellData
+    CellData (..),
+    newCellData,
+
+    -- ** CellFormat
+    CellFormat (..),
+    newCellFormat,
+
+    -- ** CellFormat_HorizontalAlignment
+    CellFormat_HorizontalAlignment (..),
+
+    -- ** CellFormat_HyperlinkDisplayType
+    CellFormat_HyperlinkDisplayType (..),
+
+    -- ** CellFormat_TextDirection
+    CellFormat_TextDirection (..),
+
+    -- ** CellFormat_VerticalAlignment
+    CellFormat_VerticalAlignment (..),
+
+    -- ** CellFormat_WrapStrategy
+    CellFormat_WrapStrategy (..),
+
+    -- ** ChartAxisViewWindowOptions
+    ChartAxisViewWindowOptions (..),
+    newChartAxisViewWindowOptions,
+
+    -- ** ChartAxisViewWindowOptions_ViewWindowMode
+    ChartAxisViewWindowOptions_ViewWindowMode (..),
+
+    -- ** ChartCustomNumberFormatOptions
+    ChartCustomNumberFormatOptions (..),
+    newChartCustomNumberFormatOptions,
+
+    -- ** ChartData
+    ChartData (..),
+    newChartData,
+
+    -- ** ChartData_AggregateType
+    ChartData_AggregateType (..),
+
+    -- ** ChartDateTimeRule
+    ChartDateTimeRule (..),
+    newChartDateTimeRule,
+
+    -- ** ChartDateTimeRule_Type
+    ChartDateTimeRule_Type (..),
+
+    -- ** ChartGroupRule
+    ChartGroupRule (..),
+    newChartGroupRule,
+
+    -- ** ChartHistogramRule
+    ChartHistogramRule (..),
+    newChartHistogramRule,
+
+    -- ** ChartSourceRange
+    ChartSourceRange (..),
+    newChartSourceRange,
+
+    -- ** ChartSpec
+    ChartSpec (..),
+    newChartSpec,
+
+    -- ** ChartSpec_HiddenDimensionStrategy
+    ChartSpec_HiddenDimensionStrategy (..),
+
+    -- ** ClearBasicFilterRequest
+    ClearBasicFilterRequest (..),
+    newClearBasicFilterRequest,
+
+    -- ** ClearValuesRequest
+    ClearValuesRequest (..),
+    newClearValuesRequest,
+
+    -- ** ClearValuesResponse
+    ClearValuesResponse (..),
+    newClearValuesResponse,
+
+    -- ** Color
+    Color (..),
+    newColor,
+
+    -- ** ColorStyle
+    ColorStyle (..),
+    newColorStyle,
+
+    -- ** ColorStyle_ThemeColor
+    ColorStyle_ThemeColor (..),
+
+    -- ** ConditionValue
+    ConditionValue (..),
+    newConditionValue,
+
+    -- ** ConditionValue_RelativeDate
+    ConditionValue_RelativeDate (..),
+
+    -- ** ConditionalFormatRule
+    ConditionalFormatRule (..),
+    newConditionalFormatRule,
+
+    -- ** CopyPasteRequest
+    CopyPasteRequest (..),
+    newCopyPasteRequest,
+
+    -- ** CopyPasteRequest_PasteOrientation
+    CopyPasteRequest_PasteOrientation (..),
+
+    -- ** CopyPasteRequest_PasteType
+    CopyPasteRequest_PasteType (..),
+
+    -- ** CopySheetToAnotherSpreadsheetRequest
+    CopySheetToAnotherSpreadsheetRequest (..),
+    newCopySheetToAnotherSpreadsheetRequest,
+
+    -- ** CreateDeveloperMetadataRequest
+    CreateDeveloperMetadataRequest (..),
+    newCreateDeveloperMetadataRequest,
+
+    -- ** CreateDeveloperMetadataResponse
+    CreateDeveloperMetadataResponse (..),
+    newCreateDeveloperMetadataResponse,
+
+    -- ** CutPasteRequest
+    CutPasteRequest (..),
+    newCutPasteRequest,
+
+    -- ** CutPasteRequest_PasteType
+    CutPasteRequest_PasteType (..),
+
+    -- ** DataExecutionStatus
+    DataExecutionStatus (..),
+    newDataExecutionStatus,
+
+    -- ** DataExecutionStatus_ErrorCode
+    DataExecutionStatus_ErrorCode (..),
+
+    -- ** DataExecutionStatus_State
+    DataExecutionStatus_State (..),
+
+    -- ** DataFilter
+    DataFilter (..),
+    newDataFilter,
+
+    -- ** DataFilterValueRange
+    DataFilterValueRange (..),
+    newDataFilterValueRange,
+
+    -- ** DataFilterValueRange_MajorDimension
+    DataFilterValueRange_MajorDimension (..),
+
+    -- ** DataLabel
+    DataLabel (..),
+    newDataLabel,
+
+    -- ** DataLabel_Placement
+    DataLabel_Placement (..),
+
+    -- ** DataLabel_Type
+    DataLabel_Type (..),
+
+    -- ** DataSource
+    DataSource (..),
+    newDataSource,
+
+    -- ** DataSourceChartProperties
+    DataSourceChartProperties (..),
+    newDataSourceChartProperties,
+
+    -- ** DataSourceColumn
+    DataSourceColumn (..),
+    newDataSourceColumn,
+
+    -- ** DataSourceColumnReference
+    DataSourceColumnReference (..),
+    newDataSourceColumnReference,
+
+    -- ** DataSourceFormula
+    DataSourceFormula (..),
+    newDataSourceFormula,
+
+    -- ** DataSourceObjectReference
+    DataSourceObjectReference (..),
+    newDataSourceObjectReference,
+
+    -- ** DataSourceObjectReferences
+    DataSourceObjectReferences (..),
+    newDataSourceObjectReferences,
+
+    -- ** DataSourceParameter
+    DataSourceParameter (..),
+    newDataSourceParameter,
+
+    -- ** DataSourceRefreshDailySchedule
+    DataSourceRefreshDailySchedule (..),
+    newDataSourceRefreshDailySchedule,
+
+    -- ** DataSourceRefreshMonthlySchedule
+    DataSourceRefreshMonthlySchedule (..),
+    newDataSourceRefreshMonthlySchedule,
+
+    -- ** DataSourceRefreshSchedule
+    DataSourceRefreshSchedule (..),
+    newDataSourceRefreshSchedule,
+
+    -- ** DataSourceRefreshSchedule_RefreshScope
+    DataSourceRefreshSchedule_RefreshScope (..),
+
+    -- ** DataSourceRefreshWeeklySchedule
+    DataSourceRefreshWeeklySchedule (..),
+    newDataSourceRefreshWeeklySchedule,
+
+    -- ** DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+    DataSourceRefreshWeeklySchedule_DaysOfWeekItem (..),
+
+    -- ** DataSourceSheetDimensionRange
+    DataSourceSheetDimensionRange (..),
+    newDataSourceSheetDimensionRange,
+
+    -- ** DataSourceSheetProperties
+    DataSourceSheetProperties (..),
+    newDataSourceSheetProperties,
+
+    -- ** DataSourceSpec
+    DataSourceSpec (..),
+    newDataSourceSpec,
+
+    -- ** DataSourceTable
+    DataSourceTable (..),
+    newDataSourceTable,
+
+    -- ** DataSourceTable_ColumnSelectionType
+    DataSourceTable_ColumnSelectionType (..),
+
+    -- ** DataValidationRule
+    DataValidationRule (..),
+    newDataValidationRule,
+
+    -- ** DateTimeRule
+    DateTimeRule (..),
+    newDateTimeRule,
+
+    -- ** DateTimeRule_Type
+    DateTimeRule_Type (..),
+
+    -- ** DeleteBandingRequest
+    DeleteBandingRequest (..),
+    newDeleteBandingRequest,
+
+    -- ** DeleteConditionalFormatRuleRequest
+    DeleteConditionalFormatRuleRequest (..),
+    newDeleteConditionalFormatRuleRequest,
+
+    -- ** DeleteConditionalFormatRuleResponse
+    DeleteConditionalFormatRuleResponse (..),
+    newDeleteConditionalFormatRuleResponse,
+
+    -- ** DeleteDataSourceRequest
+    DeleteDataSourceRequest (..),
+    newDeleteDataSourceRequest,
+
+    -- ** DeleteDeveloperMetadataRequest
+    DeleteDeveloperMetadataRequest (..),
+    newDeleteDeveloperMetadataRequest,
+
+    -- ** DeleteDeveloperMetadataResponse
+    DeleteDeveloperMetadataResponse (..),
+    newDeleteDeveloperMetadataResponse,
+
+    -- ** DeleteDimensionGroupRequest
+    DeleteDimensionGroupRequest (..),
+    newDeleteDimensionGroupRequest,
+
+    -- ** DeleteDimensionGroupResponse
+    DeleteDimensionGroupResponse (..),
+    newDeleteDimensionGroupResponse,
+
+    -- ** DeleteDimensionRequest
+    DeleteDimensionRequest (..),
+    newDeleteDimensionRequest,
+
+    -- ** DeleteDuplicatesRequest
+    DeleteDuplicatesRequest (..),
+    newDeleteDuplicatesRequest,
+
+    -- ** DeleteDuplicatesResponse
+    DeleteDuplicatesResponse (..),
+    newDeleteDuplicatesResponse,
+
+    -- ** DeleteEmbeddedObjectRequest
+    DeleteEmbeddedObjectRequest (..),
+    newDeleteEmbeddedObjectRequest,
+
+    -- ** DeleteFilterViewRequest
+    DeleteFilterViewRequest (..),
+    newDeleteFilterViewRequest,
+
+    -- ** DeleteNamedRangeRequest
+    DeleteNamedRangeRequest (..),
+    newDeleteNamedRangeRequest,
+
+    -- ** DeleteProtectedRangeRequest
+    DeleteProtectedRangeRequest (..),
+    newDeleteProtectedRangeRequest,
+
+    -- ** DeleteRangeRequest
+    DeleteRangeRequest (..),
+    newDeleteRangeRequest,
+
+    -- ** DeleteRangeRequest_ShiftDimension
+    DeleteRangeRequest_ShiftDimension (..),
+
+    -- ** DeleteSheetRequest
+    DeleteSheetRequest (..),
+    newDeleteSheetRequest,
+
+    -- ** DeveloperMetadata
+    DeveloperMetadata (..),
+    newDeveloperMetadata,
+
+    -- ** DeveloperMetadata_Visibility
+    DeveloperMetadata_Visibility (..),
+
+    -- ** DeveloperMetadataLocation
+    DeveloperMetadataLocation (..),
+    newDeveloperMetadataLocation,
+
+    -- ** DeveloperMetadataLocation_LocationType
+    DeveloperMetadataLocation_LocationType (..),
+
+    -- ** DeveloperMetadataLookup
+    DeveloperMetadataLookup (..),
+    newDeveloperMetadataLookup,
+
+    -- ** DeveloperMetadataLookup_LocationMatchingStrategy
+    DeveloperMetadataLookup_LocationMatchingStrategy (..),
+
+    -- ** DeveloperMetadataLookup_LocationType
+    DeveloperMetadataLookup_LocationType (..),
+
+    -- ** DeveloperMetadataLookup_Visibility
+    DeveloperMetadataLookup_Visibility (..),
+
+    -- ** DimensionGroup
+    DimensionGroup (..),
+    newDimensionGroup,
+
+    -- ** DimensionProperties
+    DimensionProperties (..),
+    newDimensionProperties,
+
+    -- ** DimensionRange
+    DimensionRange (..),
+    newDimensionRange,
+
+    -- ** DimensionRange_Dimension
+    DimensionRange_Dimension (..),
+
+    -- ** DuplicateFilterViewRequest
+    DuplicateFilterViewRequest (..),
+    newDuplicateFilterViewRequest,
+
+    -- ** DuplicateFilterViewResponse
+    DuplicateFilterViewResponse (..),
+    newDuplicateFilterViewResponse,
+
+    -- ** DuplicateSheetRequest
+    DuplicateSheetRequest (..),
+    newDuplicateSheetRequest,
+
+    -- ** DuplicateSheetResponse
+    DuplicateSheetResponse (..),
+    newDuplicateSheetResponse,
+
+    -- ** Editors
+    Editors (..),
+    newEditors,
+
+    -- ** EmbeddedChart
+    EmbeddedChart (..),
+    newEmbeddedChart,
+
+    -- ** EmbeddedObjectBorder
+    EmbeddedObjectBorder (..),
+    newEmbeddedObjectBorder,
+
+    -- ** EmbeddedObjectPosition
+    EmbeddedObjectPosition (..),
+    newEmbeddedObjectPosition,
+
+    -- ** ErrorValue
+    ErrorValue (..),
+    newErrorValue,
+
+    -- ** ErrorValue_Type
+    ErrorValue_Type (..),
+
+    -- ** ExtendedValue
+    ExtendedValue (..),
+    newExtendedValue,
+
+    -- ** FilterCriteria
+    FilterCriteria (..),
+    newFilterCriteria,
+
+    -- ** FilterSpec
+    FilterSpec (..),
+    newFilterSpec,
+
+    -- ** FilterView
+    FilterView (..),
+    newFilterView,
+
+    -- ** FilterView_Criteria
+    FilterView_Criteria (..),
+    newFilterView_Criteria,
+
+    -- ** FindReplaceRequest
+    FindReplaceRequest (..),
+    newFindReplaceRequest,
+
+    -- ** FindReplaceResponse
+    FindReplaceResponse (..),
+    newFindReplaceResponse,
+
+    -- ** GetSpreadsheetByDataFilterRequest
+    GetSpreadsheetByDataFilterRequest (..),
+    newGetSpreadsheetByDataFilterRequest,
+
+    -- ** GradientRule
+    GradientRule (..),
+    newGradientRule,
+
+    -- ** GridCoordinate
+    GridCoordinate (..),
+    newGridCoordinate,
+
+    -- ** GridData
+    GridData (..),
+    newGridData,
+
+    -- ** GridProperties
+    GridProperties (..),
+    newGridProperties,
+
+    -- ** GridRange
+    GridRange (..),
+    newGridRange,
+
+    -- ** HistogramChartSpec
+    HistogramChartSpec (..),
+    newHistogramChartSpec,
+
+    -- ** HistogramChartSpec_LegendPosition
+    HistogramChartSpec_LegendPosition (..),
+
+    -- ** HistogramRule
+    HistogramRule (..),
+    newHistogramRule,
+
+    -- ** HistogramSeries
+    HistogramSeries (..),
+    newHistogramSeries,
+
+    -- ** InsertDimensionRequest
+    InsertDimensionRequest (..),
+    newInsertDimensionRequest,
+
+    -- ** InsertRangeRequest
+    InsertRangeRequest (..),
+    newInsertRangeRequest,
+
+    -- ** InsertRangeRequest_ShiftDimension
+    InsertRangeRequest_ShiftDimension (..),
+
+    -- ** InterpolationPoint
+    InterpolationPoint (..),
+    newInterpolationPoint,
+
+    -- ** InterpolationPoint_Type
+    InterpolationPoint_Type (..),
+
+    -- ** Interval
+    Interval (..),
+    newInterval,
+
+    -- ** IterativeCalculationSettings
+    IterativeCalculationSettings (..),
+    newIterativeCalculationSettings,
+
+    -- ** KeyValueFormat
+    KeyValueFormat (..),
+    newKeyValueFormat,
+
+    -- ** LineStyle
+    LineStyle (..),
+    newLineStyle,
+
+    -- ** LineStyle_Type
+    LineStyle_Type (..),
+
+    -- ** Link
+    Link (..),
+    newLink,
+
+    -- ** LookerDataSourceSpec
+    LookerDataSourceSpec (..),
+    newLookerDataSourceSpec,
+
+    -- ** ManualRule
+    ManualRule (..),
+    newManualRule,
+
+    -- ** ManualRuleGroup
+    ManualRuleGroup (..),
+    newManualRuleGroup,
+
+    -- ** MatchedDeveloperMetadata
+    MatchedDeveloperMetadata (..),
+    newMatchedDeveloperMetadata,
+
+    -- ** MatchedValueRange
+    MatchedValueRange (..),
+    newMatchedValueRange,
+
+    -- ** MergeCellsRequest
+    MergeCellsRequest (..),
+    newMergeCellsRequest,
+
+    -- ** MergeCellsRequest_MergeType
+    MergeCellsRequest_MergeType (..),
+
+    -- ** MoveDimensionRequest
+    MoveDimensionRequest (..),
+    newMoveDimensionRequest,
+
+    -- ** NamedRange
+    NamedRange (..),
+    newNamedRange,
+
+    -- ** NumberFormat
+    NumberFormat (..),
+    newNumberFormat,
+
+    -- ** NumberFormat_Type
+    NumberFormat_Type (..),
+
+    -- ** OrgChartSpec
+    OrgChartSpec (..),
+    newOrgChartSpec,
+
+    -- ** OrgChartSpec_NodeSize
+    OrgChartSpec_NodeSize (..),
+
+    -- ** OverlayPosition
+    OverlayPosition (..),
+    newOverlayPosition,
+
+    -- ** Padding
+    Padding (..),
+    newPadding,
+
+    -- ** PasteDataRequest
+    PasteDataRequest (..),
+    newPasteDataRequest,
+
+    -- ** PasteDataRequest_Type
+    PasteDataRequest_Type (..),
+
+    -- ** PieChartSpec
+    PieChartSpec (..),
+    newPieChartSpec,
+
+    -- ** PieChartSpec_LegendPosition
+    PieChartSpec_LegendPosition (..),
+
+    -- ** PivotFilterCriteria
+    PivotFilterCriteria (..),
+    newPivotFilterCriteria,
+
+    -- ** PivotFilterSpec
+    PivotFilterSpec (..),
+    newPivotFilterSpec,
+
+    -- ** PivotGroup
+    PivotGroup (..),
+    newPivotGroup,
+
+    -- ** PivotGroup_SortOrder
+    PivotGroup_SortOrder (..),
+
+    -- ** PivotGroupLimit
+    PivotGroupLimit (..),
+    newPivotGroupLimit,
+
+    -- ** PivotGroupRule
+    PivotGroupRule (..),
+    newPivotGroupRule,
+
+    -- ** PivotGroupSortValueBucket
+    PivotGroupSortValueBucket (..),
+    newPivotGroupSortValueBucket,
+
+    -- ** PivotGroupValueMetadata
+    PivotGroupValueMetadata (..),
+    newPivotGroupValueMetadata,
+
+    -- ** PivotTable
+    PivotTable (..),
+    newPivotTable,
+
+    -- ** PivotTable_Criteria
+    PivotTable_Criteria (..),
+    newPivotTable_Criteria,
+
+    -- ** PivotTable_ValueLayout
+    PivotTable_ValueLayout (..),
+
+    -- ** PivotValue
+    PivotValue (..),
+    newPivotValue,
+
+    -- ** PivotValue_CalculatedDisplayType
+    PivotValue_CalculatedDisplayType (..),
+
+    -- ** PivotValue_SummarizeFunction
+    PivotValue_SummarizeFunction (..),
+
+    -- ** PointStyle
+    PointStyle (..),
+    newPointStyle,
+
+    -- ** PointStyle_Shape
+    PointStyle_Shape (..),
+
+    -- ** ProtectedRange
+    ProtectedRange (..),
+    newProtectedRange,
+
+    -- ** RandomizeRangeRequest
+    RandomizeRangeRequest (..),
+    newRandomizeRangeRequest,
+
+    -- ** RefreshCancellationStatus
+    RefreshCancellationStatus (..),
+    newRefreshCancellationStatus,
+
+    -- ** RefreshCancellationStatus_ErrorCode
+    RefreshCancellationStatus_ErrorCode (..),
+
+    -- ** RefreshCancellationStatus_State
+    RefreshCancellationStatus_State (..),
+
+    -- ** RefreshDataSourceObjectExecutionStatus
+    RefreshDataSourceObjectExecutionStatus (..),
+    newRefreshDataSourceObjectExecutionStatus,
+
+    -- ** RefreshDataSourceRequest
+    RefreshDataSourceRequest (..),
+    newRefreshDataSourceRequest,
+
+    -- ** RefreshDataSourceResponse
+    RefreshDataSourceResponse (..),
+    newRefreshDataSourceResponse,
+
+    -- ** RepeatCellRequest
+    RepeatCellRequest (..),
+    newRepeatCellRequest,
+
+    -- ** Request'
+    Request' (..),
+    newRequest,
+
+    -- ** Response
+    Response (..),
+    newResponse,
+
+    -- ** RowData
+    RowData (..),
+    newRowData,
+
+    -- ** ScorecardChartSpec
+    ScorecardChartSpec (..),
+    newScorecardChartSpec,
+
+    -- ** ScorecardChartSpec_AggregateType
+    ScorecardChartSpec_AggregateType (..),
+
+    -- ** ScorecardChartSpec_NumberFormatSource
+    ScorecardChartSpec_NumberFormatSource (..),
+
+    -- ** SearchDeveloperMetadataRequest
+    SearchDeveloperMetadataRequest (..),
+    newSearchDeveloperMetadataRequest,
+
+    -- ** SearchDeveloperMetadataResponse
+    SearchDeveloperMetadataResponse (..),
+    newSearchDeveloperMetadataResponse,
+
+    -- ** SetBasicFilterRequest
+    SetBasicFilterRequest (..),
+    newSetBasicFilterRequest,
+
+    -- ** SetDataValidationRequest
+    SetDataValidationRequest (..),
+    newSetDataValidationRequest,
+
+    -- ** Sheet
+    Sheet (..),
+    newSheet,
+
+    -- ** SheetProperties
+    SheetProperties (..),
+    newSheetProperties,
+
+    -- ** SheetProperties_SheetType
+    SheetProperties_SheetType (..),
+
+    -- ** Slicer
+    Slicer (..),
+    newSlicer,
+
+    -- ** SlicerSpec
+    SlicerSpec (..),
+    newSlicerSpec,
+
+    -- ** SlicerSpec_HorizontalAlignment
+    SlicerSpec_HorizontalAlignment (..),
+
+    -- ** SortRangeRequest
+    SortRangeRequest (..),
+    newSortRangeRequest,
+
+    -- ** SortSpec
+    SortSpec (..),
+    newSortSpec,
+
+    -- ** SortSpec_SortOrder
+    SortSpec_SortOrder (..),
+
+    -- ** SourceAndDestination
+    SourceAndDestination (..),
+    newSourceAndDestination,
+
+    -- ** SourceAndDestination_Dimension
+    SourceAndDestination_Dimension (..),
+
+    -- ** Spreadsheet
+    Spreadsheet (..),
+    newSpreadsheet,
+
+    -- ** SpreadsheetProperties
+    SpreadsheetProperties (..),
+    newSpreadsheetProperties,
+
+    -- ** SpreadsheetProperties_AutoRecalc
+    SpreadsheetProperties_AutoRecalc (..),
+
+    -- ** SpreadsheetTheme
+    SpreadsheetTheme (..),
+    newSpreadsheetTheme,
+
+    -- ** TextFormat
+    TextFormat (..),
+    newTextFormat,
+
+    -- ** TextFormatRun
+    TextFormatRun (..),
+    newTextFormatRun,
+
+    -- ** TextPosition
+    TextPosition (..),
+    newTextPosition,
+
+    -- ** TextPosition_HorizontalAlignment
+    TextPosition_HorizontalAlignment (..),
+
+    -- ** TextRotation
+    TextRotation (..),
+    newTextRotation,
+
+    -- ** TextToColumnsRequest
+    TextToColumnsRequest (..),
+    newTextToColumnsRequest,
+
+    -- ** TextToColumnsRequest_DelimiterType
+    TextToColumnsRequest_DelimiterType (..),
+
+    -- ** ThemeColorPair
+    ThemeColorPair (..),
+    newThemeColorPair,
+
+    -- ** ThemeColorPair_ColorType
+    ThemeColorPair_ColorType (..),
+
+    -- ** TimeOfDay'
+    TimeOfDay' (..),
+    newTimeOfDay,
+
+    -- ** TreemapChartColorScale
+    TreemapChartColorScale (..),
+    newTreemapChartColorScale,
+
+    -- ** TreemapChartSpec
+    TreemapChartSpec (..),
+    newTreemapChartSpec,
+
+    -- ** TrimWhitespaceRequest
+    TrimWhitespaceRequest (..),
+    newTrimWhitespaceRequest,
+
+    -- ** TrimWhitespaceResponse
+    TrimWhitespaceResponse (..),
+    newTrimWhitespaceResponse,
+
+    -- ** UnmergeCellsRequest
+    UnmergeCellsRequest (..),
+    newUnmergeCellsRequest,
+
+    -- ** UpdateBandingRequest
+    UpdateBandingRequest (..),
+    newUpdateBandingRequest,
+
+    -- ** UpdateBordersRequest
+    UpdateBordersRequest (..),
+    newUpdateBordersRequest,
+
+    -- ** UpdateCellsRequest
+    UpdateCellsRequest (..),
+    newUpdateCellsRequest,
+
+    -- ** UpdateChartSpecRequest
+    UpdateChartSpecRequest (..),
+    newUpdateChartSpecRequest,
+
+    -- ** UpdateConditionalFormatRuleRequest
+    UpdateConditionalFormatRuleRequest (..),
+    newUpdateConditionalFormatRuleRequest,
+
+    -- ** UpdateConditionalFormatRuleResponse
+    UpdateConditionalFormatRuleResponse (..),
+    newUpdateConditionalFormatRuleResponse,
+
+    -- ** UpdateDataSourceRequest
+    UpdateDataSourceRequest (..),
+    newUpdateDataSourceRequest,
+
+    -- ** UpdateDataSourceResponse
+    UpdateDataSourceResponse (..),
+    newUpdateDataSourceResponse,
+
+    -- ** UpdateDeveloperMetadataRequest
+    UpdateDeveloperMetadataRequest (..),
+    newUpdateDeveloperMetadataRequest,
+
+    -- ** UpdateDeveloperMetadataResponse
+    UpdateDeveloperMetadataResponse (..),
+    newUpdateDeveloperMetadataResponse,
+
+    -- ** UpdateDimensionGroupRequest
+    UpdateDimensionGroupRequest (..),
+    newUpdateDimensionGroupRequest,
+
+    -- ** UpdateDimensionPropertiesRequest
+    UpdateDimensionPropertiesRequest (..),
+    newUpdateDimensionPropertiesRequest,
+
+    -- ** UpdateEmbeddedObjectBorderRequest
+    UpdateEmbeddedObjectBorderRequest (..),
+    newUpdateEmbeddedObjectBorderRequest,
+
+    -- ** UpdateEmbeddedObjectPositionRequest
+    UpdateEmbeddedObjectPositionRequest (..),
+    newUpdateEmbeddedObjectPositionRequest,
+
+    -- ** UpdateEmbeddedObjectPositionResponse
+    UpdateEmbeddedObjectPositionResponse (..),
+    newUpdateEmbeddedObjectPositionResponse,
+
+    -- ** UpdateFilterViewRequest
+    UpdateFilterViewRequest (..),
+    newUpdateFilterViewRequest,
+
+    -- ** UpdateNamedRangeRequest
+    UpdateNamedRangeRequest (..),
+    newUpdateNamedRangeRequest,
+
+    -- ** UpdateProtectedRangeRequest
+    UpdateProtectedRangeRequest (..),
+    newUpdateProtectedRangeRequest,
+
+    -- ** UpdateSheetPropertiesRequest
+    UpdateSheetPropertiesRequest (..),
+    newUpdateSheetPropertiesRequest,
+
+    -- ** UpdateSlicerSpecRequest
+    UpdateSlicerSpecRequest (..),
+    newUpdateSlicerSpecRequest,
+
+    -- ** UpdateSpreadsheetPropertiesRequest
+    UpdateSpreadsheetPropertiesRequest (..),
+    newUpdateSpreadsheetPropertiesRequest,
+
+    -- ** UpdateValuesByDataFilterResponse
+    UpdateValuesByDataFilterResponse (..),
+    newUpdateValuesByDataFilterResponse,
+
+    -- ** UpdateValuesResponse
+    UpdateValuesResponse (..),
+    newUpdateValuesResponse,
+
+    -- ** ValueRange
+    ValueRange (..),
+    newValueRange,
+
+    -- ** ValueRange_MajorDimension
+    ValueRange_MajorDimension (..),
+
+    -- ** WaterfallChartColumnStyle
+    WaterfallChartColumnStyle (..),
+    newWaterfallChartColumnStyle,
+
+    -- ** WaterfallChartCustomSubtotal
+    WaterfallChartCustomSubtotal (..),
+    newWaterfallChartCustomSubtotal,
+
+    -- ** WaterfallChartDomain
+    WaterfallChartDomain (..),
+    newWaterfallChartDomain,
+
+    -- ** WaterfallChartSeries
+    WaterfallChartSeries (..),
+    newWaterfallChartSeries,
+
+    -- ** WaterfallChartSpec
+    WaterfallChartSpec (..),
+    newWaterfallChartSpec,
+
+    -- ** WaterfallChartSpec_StackedType
+    WaterfallChartSpec_StackedType (..),
+
+    -- ** SpreadsheetsValuesAppendInsertDataOption
+    SpreadsheetsValuesAppendInsertDataOption (..),
+
+    -- ** SpreadsheetsValuesAppendResponseDateTimeRenderOption
+    SpreadsheetsValuesAppendResponseDateTimeRenderOption (..),
+
+    -- ** SpreadsheetsValuesAppendResponseValueRenderOption
+    SpreadsheetsValuesAppendResponseValueRenderOption (..),
+
+    -- ** SpreadsheetsValuesAppendValueInputOption
+    SpreadsheetsValuesAppendValueInputOption (..),
+
+    -- ** SpreadsheetsValuesBatchGetDateTimeRenderOption
+    SpreadsheetsValuesBatchGetDateTimeRenderOption (..),
+
+    -- ** SpreadsheetsValuesBatchGetMajorDimension
+    SpreadsheetsValuesBatchGetMajorDimension (..),
+
+    -- ** SpreadsheetsValuesBatchGetValueRenderOption
+    SpreadsheetsValuesBatchGetValueRenderOption (..),
+
+    -- ** SpreadsheetsValuesGetDateTimeRenderOption
+    SpreadsheetsValuesGetDateTimeRenderOption (..),
+
+    -- ** SpreadsheetsValuesGetMajorDimension
+    SpreadsheetsValuesGetMajorDimension (..),
+
+    -- ** SpreadsheetsValuesGetValueRenderOption
+    SpreadsheetsValuesGetValueRenderOption (..),
+
+    -- ** SpreadsheetsValuesUpdateResponseDateTimeRenderOption
+    SpreadsheetsValuesUpdateResponseDateTimeRenderOption (..),
+
+    -- ** SpreadsheetsValuesUpdateResponseValueRenderOption
+    SpreadsheetsValuesUpdateResponseValueRenderOption (..),
+
+    -- ** SpreadsheetsValuesUpdateValueInputOption
+    SpreadsheetsValuesUpdateValueInputOption (..),
+  )
+where
+
+import Gogol.Sheets.Spreadsheets.BatchUpdate
+import Gogol.Sheets.Spreadsheets.Create
+import Gogol.Sheets.Spreadsheets.DeveloperMetadata.Get
+import Gogol.Sheets.Spreadsheets.DeveloperMetadata.Search
+import Gogol.Sheets.Spreadsheets.Get
+import Gogol.Sheets.Spreadsheets.GetByDataFilter
+import Gogol.Sheets.Spreadsheets.Sheets.CopyTo
+import Gogol.Sheets.Spreadsheets.Values.Append
+import Gogol.Sheets.Spreadsheets.Values.BatchClear
+import Gogol.Sheets.Spreadsheets.Values.BatchClearByDataFilter
+import Gogol.Sheets.Spreadsheets.Values.BatchGet
+import Gogol.Sheets.Spreadsheets.Values.BatchGetByDataFilter
+import Gogol.Sheets.Spreadsheets.Values.BatchUpdate
+import Gogol.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter
+import Gogol.Sheets.Spreadsheets.Values.Clear
+import Gogol.Sheets.Spreadsheets.Values.Get
+import Gogol.Sheets.Spreadsheets.Values.Update
+import Gogol.Sheets.Types
diff --git a/gen/Gogol/Sheets/Internal/Product.hs b/gen/Gogol/Sheets/Internal/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Internal/Product.hs
@@ -0,0 +1,12474 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Internal.Product
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.Sheets.Internal.Product
+  ( -- * AddBandingRequest
+    AddBandingRequest (..),
+    newAddBandingRequest,
+
+    -- * AddBandingResponse
+    AddBandingResponse (..),
+    newAddBandingResponse,
+
+    -- * AddChartRequest
+    AddChartRequest (..),
+    newAddChartRequest,
+
+    -- * AddChartResponse
+    AddChartResponse (..),
+    newAddChartResponse,
+
+    -- * AddConditionalFormatRuleRequest
+    AddConditionalFormatRuleRequest (..),
+    newAddConditionalFormatRuleRequest,
+
+    -- * AddDataSourceRequest
+    AddDataSourceRequest (..),
+    newAddDataSourceRequest,
+
+    -- * AddDataSourceResponse
+    AddDataSourceResponse (..),
+    newAddDataSourceResponse,
+
+    -- * AddDimensionGroupRequest
+    AddDimensionGroupRequest (..),
+    newAddDimensionGroupRequest,
+
+    -- * AddDimensionGroupResponse
+    AddDimensionGroupResponse (..),
+    newAddDimensionGroupResponse,
+
+    -- * AddFilterViewRequest
+    AddFilterViewRequest (..),
+    newAddFilterViewRequest,
+
+    -- * AddFilterViewResponse
+    AddFilterViewResponse (..),
+    newAddFilterViewResponse,
+
+    -- * AddNamedRangeRequest
+    AddNamedRangeRequest (..),
+    newAddNamedRangeRequest,
+
+    -- * AddNamedRangeResponse
+    AddNamedRangeResponse (..),
+    newAddNamedRangeResponse,
+
+    -- * AddProtectedRangeRequest
+    AddProtectedRangeRequest (..),
+    newAddProtectedRangeRequest,
+
+    -- * AddProtectedRangeResponse
+    AddProtectedRangeResponse (..),
+    newAddProtectedRangeResponse,
+
+    -- * AddSheetRequest
+    AddSheetRequest (..),
+    newAddSheetRequest,
+
+    -- * AddSheetResponse
+    AddSheetResponse (..),
+    newAddSheetResponse,
+
+    -- * AddSlicerRequest
+    AddSlicerRequest (..),
+    newAddSlicerRequest,
+
+    -- * AddSlicerResponse
+    AddSlicerResponse (..),
+    newAddSlicerResponse,
+
+    -- * AppendCellsRequest
+    AppendCellsRequest (..),
+    newAppendCellsRequest,
+
+    -- * AppendDimensionRequest
+    AppendDimensionRequest (..),
+    newAppendDimensionRequest,
+
+    -- * AppendValuesResponse
+    AppendValuesResponse (..),
+    newAppendValuesResponse,
+
+    -- * AutoFillRequest
+    AutoFillRequest (..),
+    newAutoFillRequest,
+
+    -- * AutoResizeDimensionsRequest
+    AutoResizeDimensionsRequest (..),
+    newAutoResizeDimensionsRequest,
+
+    -- * BandedRange
+    BandedRange (..),
+    newBandedRange,
+
+    -- * BandingProperties
+    BandingProperties (..),
+    newBandingProperties,
+
+    -- * BaselineValueFormat
+    BaselineValueFormat (..),
+    newBaselineValueFormat,
+
+    -- * BasicChartAxis
+    BasicChartAxis (..),
+    newBasicChartAxis,
+
+    -- * BasicChartDomain
+    BasicChartDomain (..),
+    newBasicChartDomain,
+
+    -- * BasicChartSeries
+    BasicChartSeries (..),
+    newBasicChartSeries,
+
+    -- * BasicChartSpec
+    BasicChartSpec (..),
+    newBasicChartSpec,
+
+    -- * BasicFilter
+    BasicFilter (..),
+    newBasicFilter,
+
+    -- * BasicFilter_Criteria
+    BasicFilter_Criteria (..),
+    newBasicFilter_Criteria,
+
+    -- * BasicSeriesDataPointStyleOverride
+    BasicSeriesDataPointStyleOverride (..),
+    newBasicSeriesDataPointStyleOverride,
+
+    -- * BatchClearValuesByDataFilterRequest
+    BatchClearValuesByDataFilterRequest (..),
+    newBatchClearValuesByDataFilterRequest,
+
+    -- * BatchClearValuesByDataFilterResponse
+    BatchClearValuesByDataFilterResponse (..),
+    newBatchClearValuesByDataFilterResponse,
+
+    -- * BatchClearValuesRequest
+    BatchClearValuesRequest (..),
+    newBatchClearValuesRequest,
+
+    -- * BatchClearValuesResponse
+    BatchClearValuesResponse (..),
+    newBatchClearValuesResponse,
+
+    -- * BatchGetValuesByDataFilterRequest
+    BatchGetValuesByDataFilterRequest (..),
+    newBatchGetValuesByDataFilterRequest,
+
+    -- * BatchGetValuesByDataFilterResponse
+    BatchGetValuesByDataFilterResponse (..),
+    newBatchGetValuesByDataFilterResponse,
+
+    -- * BatchGetValuesResponse
+    BatchGetValuesResponse (..),
+    newBatchGetValuesResponse,
+
+    -- * BatchUpdateSpreadsheetRequest
+    BatchUpdateSpreadsheetRequest (..),
+    newBatchUpdateSpreadsheetRequest,
+
+    -- * BatchUpdateSpreadsheetResponse
+    BatchUpdateSpreadsheetResponse (..),
+    newBatchUpdateSpreadsheetResponse,
+
+    -- * BatchUpdateValuesByDataFilterRequest
+    BatchUpdateValuesByDataFilterRequest (..),
+    newBatchUpdateValuesByDataFilterRequest,
+
+    -- * BatchUpdateValuesByDataFilterResponse
+    BatchUpdateValuesByDataFilterResponse (..),
+    newBatchUpdateValuesByDataFilterResponse,
+
+    -- * BatchUpdateValuesRequest
+    BatchUpdateValuesRequest (..),
+    newBatchUpdateValuesRequest,
+
+    -- * BatchUpdateValuesResponse
+    BatchUpdateValuesResponse (..),
+    newBatchUpdateValuesResponse,
+
+    -- * BigQueryDataSourceSpec
+    BigQueryDataSourceSpec (..),
+    newBigQueryDataSourceSpec,
+
+    -- * BigQueryQuerySpec
+    BigQueryQuerySpec (..),
+    newBigQueryQuerySpec,
+
+    -- * BigQueryTableSpec
+    BigQueryTableSpec (..),
+    newBigQueryTableSpec,
+
+    -- * BooleanCondition
+    BooleanCondition (..),
+    newBooleanCondition,
+
+    -- * BooleanRule
+    BooleanRule (..),
+    newBooleanRule,
+
+    -- * Border
+    Border (..),
+    newBorder,
+
+    -- * Borders
+    Borders (..),
+    newBorders,
+
+    -- * BubbleChartSpec
+    BubbleChartSpec (..),
+    newBubbleChartSpec,
+
+    -- * CancelDataSourceRefreshRequest
+    CancelDataSourceRefreshRequest (..),
+    newCancelDataSourceRefreshRequest,
+
+    -- * CancelDataSourceRefreshResponse
+    CancelDataSourceRefreshResponse (..),
+    newCancelDataSourceRefreshResponse,
+
+    -- * CancelDataSourceRefreshStatus
+    CancelDataSourceRefreshStatus (..),
+    newCancelDataSourceRefreshStatus,
+
+    -- * CandlestickChartSpec
+    CandlestickChartSpec (..),
+    newCandlestickChartSpec,
+
+    -- * CandlestickData
+    CandlestickData (..),
+    newCandlestickData,
+
+    -- * CandlestickDomain
+    CandlestickDomain (..),
+    newCandlestickDomain,
+
+    -- * CandlestickSeries
+    CandlestickSeries (..),
+    newCandlestickSeries,
+
+    -- * CellData
+    CellData (..),
+    newCellData,
+
+    -- * CellFormat
+    CellFormat (..),
+    newCellFormat,
+
+    -- * ChartAxisViewWindowOptions
+    ChartAxisViewWindowOptions (..),
+    newChartAxisViewWindowOptions,
+
+    -- * ChartCustomNumberFormatOptions
+    ChartCustomNumberFormatOptions (..),
+    newChartCustomNumberFormatOptions,
+
+    -- * ChartData
+    ChartData (..),
+    newChartData,
+
+    -- * ChartDateTimeRule
+    ChartDateTimeRule (..),
+    newChartDateTimeRule,
+
+    -- * ChartGroupRule
+    ChartGroupRule (..),
+    newChartGroupRule,
+
+    -- * ChartHistogramRule
+    ChartHistogramRule (..),
+    newChartHistogramRule,
+
+    -- * ChartSourceRange
+    ChartSourceRange (..),
+    newChartSourceRange,
+
+    -- * ChartSpec
+    ChartSpec (..),
+    newChartSpec,
+
+    -- * ClearBasicFilterRequest
+    ClearBasicFilterRequest (..),
+    newClearBasicFilterRequest,
+
+    -- * ClearValuesRequest
+    ClearValuesRequest (..),
+    newClearValuesRequest,
+
+    -- * ClearValuesResponse
+    ClearValuesResponse (..),
+    newClearValuesResponse,
+
+    -- * Color
+    Color (..),
+    newColor,
+
+    -- * ColorStyle
+    ColorStyle (..),
+    newColorStyle,
+
+    -- * ConditionValue
+    ConditionValue (..),
+    newConditionValue,
+
+    -- * ConditionalFormatRule
+    ConditionalFormatRule (..),
+    newConditionalFormatRule,
+
+    -- * CopyPasteRequest
+    CopyPasteRequest (..),
+    newCopyPasteRequest,
+
+    -- * CopySheetToAnotherSpreadsheetRequest
+    CopySheetToAnotherSpreadsheetRequest (..),
+    newCopySheetToAnotherSpreadsheetRequest,
+
+    -- * CreateDeveloperMetadataRequest
+    CreateDeveloperMetadataRequest (..),
+    newCreateDeveloperMetadataRequest,
+
+    -- * CreateDeveloperMetadataResponse
+    CreateDeveloperMetadataResponse (..),
+    newCreateDeveloperMetadataResponse,
+
+    -- * CutPasteRequest
+    CutPasteRequest (..),
+    newCutPasteRequest,
+
+    -- * DataExecutionStatus
+    DataExecutionStatus (..),
+    newDataExecutionStatus,
+
+    -- * DataFilter
+    DataFilter (..),
+    newDataFilter,
+
+    -- * DataFilterValueRange
+    DataFilterValueRange (..),
+    newDataFilterValueRange,
+
+    -- * DataLabel
+    DataLabel (..),
+    newDataLabel,
+
+    -- * DataSource
+    DataSource (..),
+    newDataSource,
+
+    -- * DataSourceChartProperties
+    DataSourceChartProperties (..),
+    newDataSourceChartProperties,
+
+    -- * DataSourceColumn
+    DataSourceColumn (..),
+    newDataSourceColumn,
+
+    -- * DataSourceColumnReference
+    DataSourceColumnReference (..),
+    newDataSourceColumnReference,
+
+    -- * DataSourceFormula
+    DataSourceFormula (..),
+    newDataSourceFormula,
+
+    -- * DataSourceObjectReference
+    DataSourceObjectReference (..),
+    newDataSourceObjectReference,
+
+    -- * DataSourceObjectReferences
+    DataSourceObjectReferences (..),
+    newDataSourceObjectReferences,
+
+    -- * DataSourceParameter
+    DataSourceParameter (..),
+    newDataSourceParameter,
+
+    -- * DataSourceRefreshDailySchedule
+    DataSourceRefreshDailySchedule (..),
+    newDataSourceRefreshDailySchedule,
+
+    -- * DataSourceRefreshMonthlySchedule
+    DataSourceRefreshMonthlySchedule (..),
+    newDataSourceRefreshMonthlySchedule,
+
+    -- * DataSourceRefreshSchedule
+    DataSourceRefreshSchedule (..),
+    newDataSourceRefreshSchedule,
+
+    -- * DataSourceRefreshWeeklySchedule
+    DataSourceRefreshWeeklySchedule (..),
+    newDataSourceRefreshWeeklySchedule,
+
+    -- * DataSourceSheetDimensionRange
+    DataSourceSheetDimensionRange (..),
+    newDataSourceSheetDimensionRange,
+
+    -- * DataSourceSheetProperties
+    DataSourceSheetProperties (..),
+    newDataSourceSheetProperties,
+
+    -- * DataSourceSpec
+    DataSourceSpec (..),
+    newDataSourceSpec,
+
+    -- * DataSourceTable
+    DataSourceTable (..),
+    newDataSourceTable,
+
+    -- * DataValidationRule
+    DataValidationRule (..),
+    newDataValidationRule,
+
+    -- * DateTimeRule
+    DateTimeRule (..),
+    newDateTimeRule,
+
+    -- * DeleteBandingRequest
+    DeleteBandingRequest (..),
+    newDeleteBandingRequest,
+
+    -- * DeleteConditionalFormatRuleRequest
+    DeleteConditionalFormatRuleRequest (..),
+    newDeleteConditionalFormatRuleRequest,
+
+    -- * DeleteConditionalFormatRuleResponse
+    DeleteConditionalFormatRuleResponse (..),
+    newDeleteConditionalFormatRuleResponse,
+
+    -- * DeleteDataSourceRequest
+    DeleteDataSourceRequest (..),
+    newDeleteDataSourceRequest,
+
+    -- * DeleteDeveloperMetadataRequest
+    DeleteDeveloperMetadataRequest (..),
+    newDeleteDeveloperMetadataRequest,
+
+    -- * DeleteDeveloperMetadataResponse
+    DeleteDeveloperMetadataResponse (..),
+    newDeleteDeveloperMetadataResponse,
+
+    -- * DeleteDimensionGroupRequest
+    DeleteDimensionGroupRequest (..),
+    newDeleteDimensionGroupRequest,
+
+    -- * DeleteDimensionGroupResponse
+    DeleteDimensionGroupResponse (..),
+    newDeleteDimensionGroupResponse,
+
+    -- * DeleteDimensionRequest
+    DeleteDimensionRequest (..),
+    newDeleteDimensionRequest,
+
+    -- * DeleteDuplicatesRequest
+    DeleteDuplicatesRequest (..),
+    newDeleteDuplicatesRequest,
+
+    -- * DeleteDuplicatesResponse
+    DeleteDuplicatesResponse (..),
+    newDeleteDuplicatesResponse,
+
+    -- * DeleteEmbeddedObjectRequest
+    DeleteEmbeddedObjectRequest (..),
+    newDeleteEmbeddedObjectRequest,
+
+    -- * DeleteFilterViewRequest
+    DeleteFilterViewRequest (..),
+    newDeleteFilterViewRequest,
+
+    -- * DeleteNamedRangeRequest
+    DeleteNamedRangeRequest (..),
+    newDeleteNamedRangeRequest,
+
+    -- * DeleteProtectedRangeRequest
+    DeleteProtectedRangeRequest (..),
+    newDeleteProtectedRangeRequest,
+
+    -- * DeleteRangeRequest
+    DeleteRangeRequest (..),
+    newDeleteRangeRequest,
+
+    -- * DeleteSheetRequest
+    DeleteSheetRequest (..),
+    newDeleteSheetRequest,
+
+    -- * DeveloperMetadata
+    DeveloperMetadata (..),
+    newDeveloperMetadata,
+
+    -- * DeveloperMetadataLocation
+    DeveloperMetadataLocation (..),
+    newDeveloperMetadataLocation,
+
+    -- * DeveloperMetadataLookup
+    DeveloperMetadataLookup (..),
+    newDeveloperMetadataLookup,
+
+    -- * DimensionGroup
+    DimensionGroup (..),
+    newDimensionGroup,
+
+    -- * DimensionProperties
+    DimensionProperties (..),
+    newDimensionProperties,
+
+    -- * DimensionRange
+    DimensionRange (..),
+    newDimensionRange,
+
+    -- * DuplicateFilterViewRequest
+    DuplicateFilterViewRequest (..),
+    newDuplicateFilterViewRequest,
+
+    -- * DuplicateFilterViewResponse
+    DuplicateFilterViewResponse (..),
+    newDuplicateFilterViewResponse,
+
+    -- * DuplicateSheetRequest
+    DuplicateSheetRequest (..),
+    newDuplicateSheetRequest,
+
+    -- * DuplicateSheetResponse
+    DuplicateSheetResponse (..),
+    newDuplicateSheetResponse,
+
+    -- * Editors
+    Editors (..),
+    newEditors,
+
+    -- * EmbeddedChart
+    EmbeddedChart (..),
+    newEmbeddedChart,
+
+    -- * EmbeddedObjectBorder
+    EmbeddedObjectBorder (..),
+    newEmbeddedObjectBorder,
+
+    -- * EmbeddedObjectPosition
+    EmbeddedObjectPosition (..),
+    newEmbeddedObjectPosition,
+
+    -- * ErrorValue
+    ErrorValue (..),
+    newErrorValue,
+
+    -- * ExtendedValue
+    ExtendedValue (..),
+    newExtendedValue,
+
+    -- * FilterCriteria
+    FilterCriteria (..),
+    newFilterCriteria,
+
+    -- * FilterSpec
+    FilterSpec (..),
+    newFilterSpec,
+
+    -- * FilterView
+    FilterView (..),
+    newFilterView,
+
+    -- * FilterView_Criteria
+    FilterView_Criteria (..),
+    newFilterView_Criteria,
+
+    -- * FindReplaceRequest
+    FindReplaceRequest (..),
+    newFindReplaceRequest,
+
+    -- * FindReplaceResponse
+    FindReplaceResponse (..),
+    newFindReplaceResponse,
+
+    -- * GetSpreadsheetByDataFilterRequest
+    GetSpreadsheetByDataFilterRequest (..),
+    newGetSpreadsheetByDataFilterRequest,
+
+    -- * GradientRule
+    GradientRule (..),
+    newGradientRule,
+
+    -- * GridCoordinate
+    GridCoordinate (..),
+    newGridCoordinate,
+
+    -- * GridData
+    GridData (..),
+    newGridData,
+
+    -- * GridProperties
+    GridProperties (..),
+    newGridProperties,
+
+    -- * GridRange
+    GridRange (..),
+    newGridRange,
+
+    -- * HistogramChartSpec
+    HistogramChartSpec (..),
+    newHistogramChartSpec,
+
+    -- * HistogramRule
+    HistogramRule (..),
+    newHistogramRule,
+
+    -- * HistogramSeries
+    HistogramSeries (..),
+    newHistogramSeries,
+
+    -- * InsertDimensionRequest
+    InsertDimensionRequest (..),
+    newInsertDimensionRequest,
+
+    -- * InsertRangeRequest
+    InsertRangeRequest (..),
+    newInsertRangeRequest,
+
+    -- * InterpolationPoint
+    InterpolationPoint (..),
+    newInterpolationPoint,
+
+    -- * Interval
+    Interval (..),
+    newInterval,
+
+    -- * IterativeCalculationSettings
+    IterativeCalculationSettings (..),
+    newIterativeCalculationSettings,
+
+    -- * KeyValueFormat
+    KeyValueFormat (..),
+    newKeyValueFormat,
+
+    -- * LineStyle
+    LineStyle (..),
+    newLineStyle,
+
+    -- * Link
+    Link (..),
+    newLink,
+
+    -- * LookerDataSourceSpec
+    LookerDataSourceSpec (..),
+    newLookerDataSourceSpec,
+
+    -- * ManualRule
+    ManualRule (..),
+    newManualRule,
+
+    -- * ManualRuleGroup
+    ManualRuleGroup (..),
+    newManualRuleGroup,
+
+    -- * MatchedDeveloperMetadata
+    MatchedDeveloperMetadata (..),
+    newMatchedDeveloperMetadata,
+
+    -- * MatchedValueRange
+    MatchedValueRange (..),
+    newMatchedValueRange,
+
+    -- * MergeCellsRequest
+    MergeCellsRequest (..),
+    newMergeCellsRequest,
+
+    -- * MoveDimensionRequest
+    MoveDimensionRequest (..),
+    newMoveDimensionRequest,
+
+    -- * NamedRange
+    NamedRange (..),
+    newNamedRange,
+
+    -- * NumberFormat
+    NumberFormat (..),
+    newNumberFormat,
+
+    -- * OrgChartSpec
+    OrgChartSpec (..),
+    newOrgChartSpec,
+
+    -- * OverlayPosition
+    OverlayPosition (..),
+    newOverlayPosition,
+
+    -- * Padding
+    Padding (..),
+    newPadding,
+
+    -- * PasteDataRequest
+    PasteDataRequest (..),
+    newPasteDataRequest,
+
+    -- * PieChartSpec
+    PieChartSpec (..),
+    newPieChartSpec,
+
+    -- * PivotFilterCriteria
+    PivotFilterCriteria (..),
+    newPivotFilterCriteria,
+
+    -- * PivotFilterSpec
+    PivotFilterSpec (..),
+    newPivotFilterSpec,
+
+    -- * PivotGroup
+    PivotGroup (..),
+    newPivotGroup,
+
+    -- * PivotGroupLimit
+    PivotGroupLimit (..),
+    newPivotGroupLimit,
+
+    -- * PivotGroupRule
+    PivotGroupRule (..),
+    newPivotGroupRule,
+
+    -- * PivotGroupSortValueBucket
+    PivotGroupSortValueBucket (..),
+    newPivotGroupSortValueBucket,
+
+    -- * PivotGroupValueMetadata
+    PivotGroupValueMetadata (..),
+    newPivotGroupValueMetadata,
+
+    -- * PivotTable
+    PivotTable (..),
+    newPivotTable,
+
+    -- * PivotTable_Criteria
+    PivotTable_Criteria (..),
+    newPivotTable_Criteria,
+
+    -- * PivotValue
+    PivotValue (..),
+    newPivotValue,
+
+    -- * PointStyle
+    PointStyle (..),
+    newPointStyle,
+
+    -- * ProtectedRange
+    ProtectedRange (..),
+    newProtectedRange,
+
+    -- * RandomizeRangeRequest
+    RandomizeRangeRequest (..),
+    newRandomizeRangeRequest,
+
+    -- * RefreshCancellationStatus
+    RefreshCancellationStatus (..),
+    newRefreshCancellationStatus,
+
+    -- * RefreshDataSourceObjectExecutionStatus
+    RefreshDataSourceObjectExecutionStatus (..),
+    newRefreshDataSourceObjectExecutionStatus,
+
+    -- * RefreshDataSourceRequest
+    RefreshDataSourceRequest (..),
+    newRefreshDataSourceRequest,
+
+    -- * RefreshDataSourceResponse
+    RefreshDataSourceResponse (..),
+    newRefreshDataSourceResponse,
+
+    -- * RepeatCellRequest
+    RepeatCellRequest (..),
+    newRepeatCellRequest,
+
+    -- * Request'
+    Request' (..),
+    newRequest,
+
+    -- * Response
+    Response (..),
+    newResponse,
+
+    -- * RowData
+    RowData (..),
+    newRowData,
+
+    -- * ScorecardChartSpec
+    ScorecardChartSpec (..),
+    newScorecardChartSpec,
+
+    -- * SearchDeveloperMetadataRequest
+    SearchDeveloperMetadataRequest (..),
+    newSearchDeveloperMetadataRequest,
+
+    -- * SearchDeveloperMetadataResponse
+    SearchDeveloperMetadataResponse (..),
+    newSearchDeveloperMetadataResponse,
+
+    -- * SetBasicFilterRequest
+    SetBasicFilterRequest (..),
+    newSetBasicFilterRequest,
+
+    -- * SetDataValidationRequest
+    SetDataValidationRequest (..),
+    newSetDataValidationRequest,
+
+    -- * Sheet
+    Sheet (..),
+    newSheet,
+
+    -- * SheetProperties
+    SheetProperties (..),
+    newSheetProperties,
+
+    -- * Slicer
+    Slicer (..),
+    newSlicer,
+
+    -- * SlicerSpec
+    SlicerSpec (..),
+    newSlicerSpec,
+
+    -- * SortRangeRequest
+    SortRangeRequest (..),
+    newSortRangeRequest,
+
+    -- * SortSpec
+    SortSpec (..),
+    newSortSpec,
+
+    -- * SourceAndDestination
+    SourceAndDestination (..),
+    newSourceAndDestination,
+
+    -- * Spreadsheet
+    Spreadsheet (..),
+    newSpreadsheet,
+
+    -- * SpreadsheetProperties
+    SpreadsheetProperties (..),
+    newSpreadsheetProperties,
+
+    -- * SpreadsheetTheme
+    SpreadsheetTheme (..),
+    newSpreadsheetTheme,
+
+    -- * TextFormat
+    TextFormat (..),
+    newTextFormat,
+
+    -- * TextFormatRun
+    TextFormatRun (..),
+    newTextFormatRun,
+
+    -- * TextPosition
+    TextPosition (..),
+    newTextPosition,
+
+    -- * TextRotation
+    TextRotation (..),
+    newTextRotation,
+
+    -- * TextToColumnsRequest
+    TextToColumnsRequest (..),
+    newTextToColumnsRequest,
+
+    -- * ThemeColorPair
+    ThemeColorPair (..),
+    newThemeColorPair,
+
+    -- * TimeOfDay'
+    TimeOfDay' (..),
+    newTimeOfDay,
+
+    -- * TreemapChartColorScale
+    TreemapChartColorScale (..),
+    newTreemapChartColorScale,
+
+    -- * TreemapChartSpec
+    TreemapChartSpec (..),
+    newTreemapChartSpec,
+
+    -- * TrimWhitespaceRequest
+    TrimWhitespaceRequest (..),
+    newTrimWhitespaceRequest,
+
+    -- * TrimWhitespaceResponse
+    TrimWhitespaceResponse (..),
+    newTrimWhitespaceResponse,
+
+    -- * UnmergeCellsRequest
+    UnmergeCellsRequest (..),
+    newUnmergeCellsRequest,
+
+    -- * UpdateBandingRequest
+    UpdateBandingRequest (..),
+    newUpdateBandingRequest,
+
+    -- * UpdateBordersRequest
+    UpdateBordersRequest (..),
+    newUpdateBordersRequest,
+
+    -- * UpdateCellsRequest
+    UpdateCellsRequest (..),
+    newUpdateCellsRequest,
+
+    -- * UpdateChartSpecRequest
+    UpdateChartSpecRequest (..),
+    newUpdateChartSpecRequest,
+
+    -- * UpdateConditionalFormatRuleRequest
+    UpdateConditionalFormatRuleRequest (..),
+    newUpdateConditionalFormatRuleRequest,
+
+    -- * UpdateConditionalFormatRuleResponse
+    UpdateConditionalFormatRuleResponse (..),
+    newUpdateConditionalFormatRuleResponse,
+
+    -- * UpdateDataSourceRequest
+    UpdateDataSourceRequest (..),
+    newUpdateDataSourceRequest,
+
+    -- * UpdateDataSourceResponse
+    UpdateDataSourceResponse (..),
+    newUpdateDataSourceResponse,
+
+    -- * UpdateDeveloperMetadataRequest
+    UpdateDeveloperMetadataRequest (..),
+    newUpdateDeveloperMetadataRequest,
+
+    -- * UpdateDeveloperMetadataResponse
+    UpdateDeveloperMetadataResponse (..),
+    newUpdateDeveloperMetadataResponse,
+
+    -- * UpdateDimensionGroupRequest
+    UpdateDimensionGroupRequest (..),
+    newUpdateDimensionGroupRequest,
+
+    -- * UpdateDimensionPropertiesRequest
+    UpdateDimensionPropertiesRequest (..),
+    newUpdateDimensionPropertiesRequest,
+
+    -- * UpdateEmbeddedObjectBorderRequest
+    UpdateEmbeddedObjectBorderRequest (..),
+    newUpdateEmbeddedObjectBorderRequest,
+
+    -- * UpdateEmbeddedObjectPositionRequest
+    UpdateEmbeddedObjectPositionRequest (..),
+    newUpdateEmbeddedObjectPositionRequest,
+
+    -- * UpdateEmbeddedObjectPositionResponse
+    UpdateEmbeddedObjectPositionResponse (..),
+    newUpdateEmbeddedObjectPositionResponse,
+
+    -- * UpdateFilterViewRequest
+    UpdateFilterViewRequest (..),
+    newUpdateFilterViewRequest,
+
+    -- * UpdateNamedRangeRequest
+    UpdateNamedRangeRequest (..),
+    newUpdateNamedRangeRequest,
+
+    -- * UpdateProtectedRangeRequest
+    UpdateProtectedRangeRequest (..),
+    newUpdateProtectedRangeRequest,
+
+    -- * UpdateSheetPropertiesRequest
+    UpdateSheetPropertiesRequest (..),
+    newUpdateSheetPropertiesRequest,
+
+    -- * UpdateSlicerSpecRequest
+    UpdateSlicerSpecRequest (..),
+    newUpdateSlicerSpecRequest,
+
+    -- * UpdateSpreadsheetPropertiesRequest
+    UpdateSpreadsheetPropertiesRequest (..),
+    newUpdateSpreadsheetPropertiesRequest,
+
+    -- * UpdateValuesByDataFilterResponse
+    UpdateValuesByDataFilterResponse (..),
+    newUpdateValuesByDataFilterResponse,
+
+    -- * UpdateValuesResponse
+    UpdateValuesResponse (..),
+    newUpdateValuesResponse,
+
+    -- * ValueRange
+    ValueRange (..),
+    newValueRange,
+
+    -- * WaterfallChartColumnStyle
+    WaterfallChartColumnStyle (..),
+    newWaterfallChartColumnStyle,
+
+    -- * WaterfallChartCustomSubtotal
+    WaterfallChartCustomSubtotal (..),
+    newWaterfallChartCustomSubtotal,
+
+    -- * WaterfallChartDomain
+    WaterfallChartDomain (..),
+    newWaterfallChartDomain,
+
+    -- * WaterfallChartSeries
+    WaterfallChartSeries (..),
+    newWaterfallChartSeries,
+
+    -- * WaterfallChartSpec
+    WaterfallChartSpec (..),
+    newWaterfallChartSpec,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Internal.Sum
+
+-- | Adds a new banded range to the spreadsheet.
+--
+-- /See:/ 'newAddBandingRequest' smart constructor.
+newtype AddBandingRequest = AddBandingRequest
+  { -- | 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.)
+    bandedRange :: (Core.Maybe BandedRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddBandingRequest' with the minimum fields required to make a request.
+newAddBandingRequest ::
+  AddBandingRequest
+newAddBandingRequest =
+  AddBandingRequest {bandedRange = Core.Nothing}
+
+instance Core.FromJSON AddBandingRequest where
+  parseJSON =
+    Core.withObject
+      "AddBandingRequest"
+      (\o -> AddBandingRequest Core.<$> (o Core..:? "bandedRange"))
+
+instance Core.ToJSON AddBandingRequest where
+  toJSON AddBandingRequest {..} =
+    Core.object
+      (Core.catMaybes [("bandedRange" Core..=) Core.<$> bandedRange])
+
+-- | The result of adding a banded range.
+--
+-- /See:/ 'newAddBandingResponse' smart constructor.
+newtype AddBandingResponse = AddBandingResponse
+  { -- | The banded range that was added.
+    bandedRange :: (Core.Maybe BandedRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddBandingResponse' with the minimum fields required to make a request.
+newAddBandingResponse ::
+  AddBandingResponse
+newAddBandingResponse =
+  AddBandingResponse {bandedRange = Core.Nothing}
+
+instance Core.FromJSON AddBandingResponse where
+  parseJSON =
+    Core.withObject
+      "AddBandingResponse"
+      (\o -> AddBandingResponse Core.<$> (o Core..:? "bandedRange"))
+
+instance Core.ToJSON AddBandingResponse where
+  toJSON AddBandingResponse {..} =
+    Core.object
+      (Core.catMaybes [("bandedRange" Core..=) Core.<$> bandedRange])
+
+-- | Adds a chart to a sheet in the spreadsheet.
+--
+-- /See:/ 'newAddChartRequest' smart constructor.
+newtype AddChartRequest = AddChartRequest
+  { -- | 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 an embedded object that already exists.)
+    chart :: (Core.Maybe EmbeddedChart)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddChartRequest' with the minimum fields required to make a request.
+newAddChartRequest ::
+  AddChartRequest
+newAddChartRequest = AddChartRequest {chart = Core.Nothing}
+
+instance Core.FromJSON AddChartRequest where
+  parseJSON =
+    Core.withObject
+      "AddChartRequest"
+      (\o -> AddChartRequest Core.<$> (o Core..:? "chart"))
+
+instance Core.ToJSON AddChartRequest where
+  toJSON AddChartRequest {..} =
+    Core.object (Core.catMaybes [("chart" Core..=) Core.<$> chart])
+
+-- | The result of adding a chart to a spreadsheet.
+--
+-- /See:/ 'newAddChartResponse' smart constructor.
+newtype AddChartResponse = AddChartResponse
+  { -- | The newly added chart.
+    chart :: (Core.Maybe EmbeddedChart)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddChartResponse' with the minimum fields required to make a request.
+newAddChartResponse ::
+  AddChartResponse
+newAddChartResponse = AddChartResponse {chart = Core.Nothing}
+
+instance Core.FromJSON AddChartResponse where
+  parseJSON =
+    Core.withObject
+      "AddChartResponse"
+      (\o -> AddChartResponse Core.<$> (o Core..:? "chart"))
+
+instance Core.ToJSON AddChartResponse where
+  toJSON AddChartResponse {..} =
+    Core.object (Core.catMaybes [("chart" Core..=) Core.<$> chart])
+
+-- | Adds a new conditional format rule at the given index. All subsequent rules\' indexes are incremented.
+--
+-- /See:/ 'newAddConditionalFormatRuleRequest' smart constructor.
+data AddConditionalFormatRuleRequest = AddConditionalFormatRuleRequest
+  { -- | The zero-based index where the rule should be inserted.
+    index :: (Core.Maybe Core.Int32),
+    -- | The rule to add.
+    rule :: (Core.Maybe ConditionalFormatRule)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddConditionalFormatRuleRequest' with the minimum fields required to make a request.
+newAddConditionalFormatRuleRequest ::
+  AddConditionalFormatRuleRequest
+newAddConditionalFormatRuleRequest =
+  AddConditionalFormatRuleRequest
+    { index = Core.Nothing,
+      rule = Core.Nothing
+    }
+
+instance Core.FromJSON AddConditionalFormatRuleRequest where
+  parseJSON =
+    Core.withObject
+      "AddConditionalFormatRuleRequest"
+      ( \o ->
+          AddConditionalFormatRuleRequest
+            Core.<$> (o Core..:? "index")
+            Core.<*> (o Core..:? "rule")
+      )
+
+instance Core.ToJSON AddConditionalFormatRuleRequest where
+  toJSON AddConditionalFormatRuleRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [("index" Core..=) Core.<$> index, ("rule" Core..=) Core.<$> rule]
+      )
+
+-- | Adds a data source. After the data source is added successfully, an associated DATA_SOURCE sheet is created and an execution is triggered to refresh the sheet to read data from the data source. The request requires an additional @bigquery.readonly@ OAuth scope if you are adding a BigQuery data source.
+--
+-- /See:/ 'newAddDataSourceRequest' smart constructor.
+newtype AddDataSourceRequest = AddDataSourceRequest
+  { -- | The data source to add.
+    dataSource :: (Core.Maybe DataSource)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddDataSourceRequest' with the minimum fields required to make a request.
+newAddDataSourceRequest ::
+  AddDataSourceRequest
+newAddDataSourceRequest =
+  AddDataSourceRequest {dataSource = Core.Nothing}
+
+instance Core.FromJSON AddDataSourceRequest where
+  parseJSON =
+    Core.withObject
+      "AddDataSourceRequest"
+      (\o -> AddDataSourceRequest Core.<$> (o Core..:? "dataSource"))
+
+instance Core.ToJSON AddDataSourceRequest where
+  toJSON AddDataSourceRequest {..} =
+    Core.object
+      (Core.catMaybes [("dataSource" Core..=) Core.<$> dataSource])
+
+-- | The result of adding a data source.
+--
+-- /See:/ 'newAddDataSourceResponse' smart constructor.
+data AddDataSourceResponse = AddDataSourceResponse
+  { -- | The data execution status.
+    dataExecutionStatus :: (Core.Maybe DataExecutionStatus),
+    -- | The data source that was created.
+    dataSource :: (Core.Maybe DataSource)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddDataSourceResponse' with the minimum fields required to make a request.
+newAddDataSourceResponse ::
+  AddDataSourceResponse
+newAddDataSourceResponse =
+  AddDataSourceResponse
+    { dataExecutionStatus = Core.Nothing,
+      dataSource = Core.Nothing
+    }
+
+instance Core.FromJSON AddDataSourceResponse where
+  parseJSON =
+    Core.withObject
+      "AddDataSourceResponse"
+      ( \o ->
+          AddDataSourceResponse
+            Core.<$> (o Core..:? "dataExecutionStatus")
+            Core.<*> (o Core..:? "dataSource")
+      )
+
+instance Core.ToJSON AddDataSourceResponse where
+  toJSON AddDataSourceResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataExecutionStatus" Core..=) Core.<$> dataExecutionStatus,
+            ("dataSource" Core..=) Core.<$> dataSource
+          ]
+      )
+
+-- | 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:/ 'newAddDimensionGroupRequest' smart constructor.
+newtype AddDimensionGroupRequest = AddDimensionGroupRequest
+  { -- | The range over which to create a group.
+    range :: (Core.Maybe DimensionRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddDimensionGroupRequest' with the minimum fields required to make a request.
+newAddDimensionGroupRequest ::
+  AddDimensionGroupRequest
+newAddDimensionGroupRequest =
+  AddDimensionGroupRequest {range = Core.Nothing}
+
+instance Core.FromJSON AddDimensionGroupRequest where
+  parseJSON =
+    Core.withObject
+      "AddDimensionGroupRequest"
+      (\o -> AddDimensionGroupRequest Core.<$> (o Core..:? "range"))
+
+instance Core.ToJSON AddDimensionGroupRequest where
+  toJSON AddDimensionGroupRequest {..} =
+    Core.object (Core.catMaybes [("range" Core..=) Core.<$> range])
+
+-- | The result of adding a group.
+--
+-- /See:/ 'newAddDimensionGroupResponse' smart constructor.
+newtype AddDimensionGroupResponse = AddDimensionGroupResponse
+  { -- | All groups of a dimension after adding a group to that dimension.
+    dimensionGroups :: (Core.Maybe [DimensionGroup])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddDimensionGroupResponse' with the minimum fields required to make a request.
+newAddDimensionGroupResponse ::
+  AddDimensionGroupResponse
+newAddDimensionGroupResponse =
+  AddDimensionGroupResponse {dimensionGroups = Core.Nothing}
+
+instance Core.FromJSON AddDimensionGroupResponse where
+  parseJSON =
+    Core.withObject
+      "AddDimensionGroupResponse"
+      ( \o ->
+          AddDimensionGroupResponse Core.<$> (o Core..:? "dimensionGroups")
+      )
+
+instance Core.ToJSON AddDimensionGroupResponse where
+  toJSON AddDimensionGroupResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("dimensionGroups" Core..=) Core.<$> dimensionGroups]
+      )
+
+-- | Adds a filter view.
+--
+-- /See:/ 'newAddFilterViewRequest' smart constructor.
+newtype AddFilterViewRequest = AddFilterViewRequest
+  { -- | 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.)
+    filter :: (Core.Maybe FilterView)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddFilterViewRequest' with the minimum fields required to make a request.
+newAddFilterViewRequest ::
+  AddFilterViewRequest
+newAddFilterViewRequest =
+  AddFilterViewRequest {filter = Core.Nothing}
+
+instance Core.FromJSON AddFilterViewRequest where
+  parseJSON =
+    Core.withObject
+      "AddFilterViewRequest"
+      (\o -> AddFilterViewRequest Core.<$> (o Core..:? "filter"))
+
+instance Core.ToJSON AddFilterViewRequest where
+  toJSON AddFilterViewRequest {..} =
+    Core.object (Core.catMaybes [("filter" Core..=) Core.<$> filter])
+
+-- | The result of adding a filter view.
+--
+-- /See:/ 'newAddFilterViewResponse' smart constructor.
+newtype AddFilterViewResponse = AddFilterViewResponse
+  { -- | The newly added filter view.
+    filter :: (Core.Maybe FilterView)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddFilterViewResponse' with the minimum fields required to make a request.
+newAddFilterViewResponse ::
+  AddFilterViewResponse
+newAddFilterViewResponse =
+  AddFilterViewResponse {filter = Core.Nothing}
+
+instance Core.FromJSON AddFilterViewResponse where
+  parseJSON =
+    Core.withObject
+      "AddFilterViewResponse"
+      (\o -> AddFilterViewResponse Core.<$> (o Core..:? "filter"))
+
+instance Core.ToJSON AddFilterViewResponse where
+  toJSON AddFilterViewResponse {..} =
+    Core.object (Core.catMaybes [("filter" Core..=) Core.<$> filter])
+
+-- | Adds a named range to the spreadsheet.
+--
+-- /See:/ 'newAddNamedRangeRequest' smart constructor.
+newtype AddNamedRangeRequest = AddNamedRangeRequest
+  { -- | 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.)
+    namedRange :: (Core.Maybe NamedRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddNamedRangeRequest' with the minimum fields required to make a request.
+newAddNamedRangeRequest ::
+  AddNamedRangeRequest
+newAddNamedRangeRequest =
+  AddNamedRangeRequest {namedRange = Core.Nothing}
+
+instance Core.FromJSON AddNamedRangeRequest where
+  parseJSON =
+    Core.withObject
+      "AddNamedRangeRequest"
+      (\o -> AddNamedRangeRequest Core.<$> (o Core..:? "namedRange"))
+
+instance Core.ToJSON AddNamedRangeRequest where
+  toJSON AddNamedRangeRequest {..} =
+    Core.object
+      (Core.catMaybes [("namedRange" Core..=) Core.<$> namedRange])
+
+-- | The result of adding a named range.
+--
+-- /See:/ 'newAddNamedRangeResponse' smart constructor.
+newtype AddNamedRangeResponse = AddNamedRangeResponse
+  { -- | The named range to add.
+    namedRange :: (Core.Maybe NamedRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddNamedRangeResponse' with the minimum fields required to make a request.
+newAddNamedRangeResponse ::
+  AddNamedRangeResponse
+newAddNamedRangeResponse =
+  AddNamedRangeResponse {namedRange = Core.Nothing}
+
+instance Core.FromJSON AddNamedRangeResponse where
+  parseJSON =
+    Core.withObject
+      "AddNamedRangeResponse"
+      (\o -> AddNamedRangeResponse Core.<$> (o Core..:? "namedRange"))
+
+instance Core.ToJSON AddNamedRangeResponse where
+  toJSON AddNamedRangeResponse {..} =
+    Core.object
+      (Core.catMaybes [("namedRange" Core..=) Core.<$> namedRange])
+
+-- | Adds a new protected range.
+--
+-- /See:/ 'newAddProtectedRangeRequest' smart constructor.
+newtype AddProtectedRangeRequest = AddProtectedRangeRequest
+  { -- | 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.)
+    protectedRange :: (Core.Maybe ProtectedRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddProtectedRangeRequest' with the minimum fields required to make a request.
+newAddProtectedRangeRequest ::
+  AddProtectedRangeRequest
+newAddProtectedRangeRequest =
+  AddProtectedRangeRequest {protectedRange = Core.Nothing}
+
+instance Core.FromJSON AddProtectedRangeRequest where
+  parseJSON =
+    Core.withObject
+      "AddProtectedRangeRequest"
+      ( \o ->
+          AddProtectedRangeRequest Core.<$> (o Core..:? "protectedRange")
+      )
+
+instance Core.ToJSON AddProtectedRangeRequest where
+  toJSON AddProtectedRangeRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [("protectedRange" Core..=) Core.<$> protectedRange]
+      )
+
+-- | The result of adding a new protected range.
+--
+-- /See:/ 'newAddProtectedRangeResponse' smart constructor.
+newtype AddProtectedRangeResponse = AddProtectedRangeResponse
+  { -- | The newly added protected range.
+    protectedRange :: (Core.Maybe ProtectedRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddProtectedRangeResponse' with the minimum fields required to make a request.
+newAddProtectedRangeResponse ::
+  AddProtectedRangeResponse
+newAddProtectedRangeResponse =
+  AddProtectedRangeResponse {protectedRange = Core.Nothing}
+
+instance Core.FromJSON AddProtectedRangeResponse where
+  parseJSON =
+    Core.withObject
+      "AddProtectedRangeResponse"
+      ( \o ->
+          AddProtectedRangeResponse Core.<$> (o Core..:? "protectedRange")
+      )
+
+instance Core.ToJSON AddProtectedRangeResponse where
+  toJSON AddProtectedRangeResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("protectedRange" Core..=) Core.<$> protectedRange]
+      )
+
+-- | 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:/ 'newAddSheetRequest' smart constructor.
+newtype AddSheetRequest = AddSheetRequest
+  { -- | 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.)
+    properties :: (Core.Maybe SheetProperties)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddSheetRequest' with the minimum fields required to make a request.
+newAddSheetRequest ::
+  AddSheetRequest
+newAddSheetRequest = AddSheetRequest {properties = Core.Nothing}
+
+instance Core.FromJSON AddSheetRequest where
+  parseJSON =
+    Core.withObject
+      "AddSheetRequest"
+      (\o -> AddSheetRequest Core.<$> (o Core..:? "properties"))
+
+instance Core.ToJSON AddSheetRequest where
+  toJSON AddSheetRequest {..} =
+    Core.object
+      (Core.catMaybes [("properties" Core..=) Core.<$> properties])
+
+-- | The result of adding a sheet.
+--
+-- /See:/ 'newAddSheetResponse' smart constructor.
+newtype AddSheetResponse = AddSheetResponse
+  { -- | The properties of the newly added sheet.
+    properties :: (Core.Maybe SheetProperties)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddSheetResponse' with the minimum fields required to make a request.
+newAddSheetResponse ::
+  AddSheetResponse
+newAddSheetResponse = AddSheetResponse {properties = Core.Nothing}
+
+instance Core.FromJSON AddSheetResponse where
+  parseJSON =
+    Core.withObject
+      "AddSheetResponse"
+      (\o -> AddSheetResponse Core.<$> (o Core..:? "properties"))
+
+instance Core.ToJSON AddSheetResponse where
+  toJSON AddSheetResponse {..} =
+    Core.object
+      (Core.catMaybes [("properties" Core..=) Core.<$> properties])
+
+-- | Adds a slicer to a sheet in the spreadsheet.
+--
+-- /See:/ 'newAddSlicerRequest' smart constructor.
+newtype AddSlicerRequest = AddSlicerRequest
+  { -- | The slicer that should be added to the spreadsheet, including the position where it should be placed. The slicerId field is optional; if one is not set, an id will be randomly generated. (It is an error to specify the ID of a slicer that already exists.)
+    slicer :: (Core.Maybe Slicer)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddSlicerRequest' with the minimum fields required to make a request.
+newAddSlicerRequest ::
+  AddSlicerRequest
+newAddSlicerRequest = AddSlicerRequest {slicer = Core.Nothing}
+
+instance Core.FromJSON AddSlicerRequest where
+  parseJSON =
+    Core.withObject
+      "AddSlicerRequest"
+      (\o -> AddSlicerRequest Core.<$> (o Core..:? "slicer"))
+
+instance Core.ToJSON AddSlicerRequest where
+  toJSON AddSlicerRequest {..} =
+    Core.object (Core.catMaybes [("slicer" Core..=) Core.<$> slicer])
+
+-- | The result of adding a slicer to a spreadsheet.
+--
+-- /See:/ 'newAddSlicerResponse' smart constructor.
+newtype AddSlicerResponse = AddSlicerResponse
+  { -- | The newly added slicer.
+    slicer :: (Core.Maybe Slicer)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddSlicerResponse' with the minimum fields required to make a request.
+newAddSlicerResponse ::
+  AddSlicerResponse
+newAddSlicerResponse = AddSlicerResponse {slicer = Core.Nothing}
+
+instance Core.FromJSON AddSlicerResponse where
+  parseJSON =
+    Core.withObject
+      "AddSlicerResponse"
+      (\o -> AddSlicerResponse Core.<$> (o Core..:? "slicer"))
+
+instance Core.ToJSON AddSlicerResponse where
+  toJSON AddSlicerResponse {..} =
+    Core.object (Core.catMaybes [("slicer" Core..=) Core.<$> slicer])
+
+-- | Adds new cells after the last row with data in a sheet, inserting new rows into the sheet if necessary.
+--
+-- /See:/ 'newAppendCellsRequest' smart constructor.
+data AppendCellsRequest = AppendCellsRequest
+  { -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | The data to append.
+    rows :: (Core.Maybe [RowData]),
+    -- | The sheet ID to append the data to.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AppendCellsRequest' with the minimum fields required to make a request.
+newAppendCellsRequest ::
+  AppendCellsRequest
+newAppendCellsRequest =
+  AppendCellsRequest
+    { fields = Core.Nothing,
+      rows = Core.Nothing,
+      sheetId = Core.Nothing
+    }
+
+instance Core.FromJSON AppendCellsRequest where
+  parseJSON =
+    Core.withObject
+      "AppendCellsRequest"
+      ( \o ->
+          AppendCellsRequest
+            Core.<$> (o Core..:? "fields")
+            Core.<*> (o Core..:? "rows")
+            Core.<*> (o Core..:? "sheetId")
+      )
+
+instance Core.ToJSON AppendCellsRequest where
+  toJSON AppendCellsRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fields" Core..=) Core.<$> fields,
+            ("rows" Core..=) Core.<$> rows,
+            ("sheetId" Core..=) Core.<$> sheetId
+          ]
+      )
+
+-- | Appends rows or columns to the end of a sheet.
+--
+-- /See:/ 'newAppendDimensionRequest' smart constructor.
+data AppendDimensionRequest = AppendDimensionRequest
+  { -- | Whether rows or columns should be appended.
+    dimension :: (Core.Maybe AppendDimensionRequest_Dimension),
+    -- | The number of rows or columns to append.
+    length :: (Core.Maybe Core.Int32),
+    -- | The sheet to append rows or columns to.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AppendDimensionRequest' with the minimum fields required to make a request.
+newAppendDimensionRequest ::
+  AppendDimensionRequest
+newAppendDimensionRequest =
+  AppendDimensionRequest
+    { dimension = Core.Nothing,
+      length = Core.Nothing,
+      sheetId = Core.Nothing
+    }
+
+instance Core.FromJSON AppendDimensionRequest where
+  parseJSON =
+    Core.withObject
+      "AppendDimensionRequest"
+      ( \o ->
+          AppendDimensionRequest
+            Core.<$> (o Core..:? "dimension")
+            Core.<*> (o Core..:? "length")
+            Core.<*> (o Core..:? "sheetId")
+      )
+
+instance Core.ToJSON AppendDimensionRequest where
+  toJSON AppendDimensionRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dimension" Core..=) Core.<$> dimension,
+            ("length" Core..=) Core.<$> length,
+            ("sheetId" Core..=) Core.<$> sheetId
+          ]
+      )
+
+-- | The response when updating a range of values in a spreadsheet.
+--
+-- /See:/ 'newAppendValuesResponse' smart constructor.
+data AppendValuesResponse = AppendValuesResponse
+  { -- | The spreadsheet the updates were applied to.
+    spreadsheetId :: (Core.Maybe Core.Text),
+    -- | 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.
+    tableRange :: (Core.Maybe Core.Text),
+    -- | Information about the updates that were applied.
+    updates :: (Core.Maybe UpdateValuesResponse)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AppendValuesResponse' with the minimum fields required to make a request.
+newAppendValuesResponse ::
+  AppendValuesResponse
+newAppendValuesResponse =
+  AppendValuesResponse
+    { spreadsheetId = Core.Nothing,
+      tableRange = Core.Nothing,
+      updates = Core.Nothing
+    }
+
+instance Core.FromJSON AppendValuesResponse where
+  parseJSON =
+    Core.withObject
+      "AppendValuesResponse"
+      ( \o ->
+          AppendValuesResponse
+            Core.<$> (o Core..:? "spreadsheetId")
+            Core.<*> (o Core..:? "tableRange")
+            Core.<*> (o Core..:? "updates")
+      )
+
+instance Core.ToJSON AppendValuesResponse where
+  toJSON AppendValuesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("spreadsheetId" Core..=) Core.<$> spreadsheetId,
+            ("tableRange" Core..=) Core.<$> tableRange,
+            ("updates" Core..=) Core.<$> updates
+          ]
+      )
+
+-- | Fills in more data based on existing data.
+--
+-- /See:/ 'newAutoFillRequest' smart constructor.
+data AutoFillRequest = AutoFillRequest
+  { -- | 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.
+    range :: (Core.Maybe GridRange),
+    -- | The source and destination areas to autofill. This explicitly lists the source of the autofill and where to extend that data.
+    sourceAndDestination :: (Core.Maybe SourceAndDestination),
+    -- | True if we should generate data with the \"alternate\" series. This differs based on the type and amount of source data.
+    useAlternateSeries :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AutoFillRequest' with the minimum fields required to make a request.
+newAutoFillRequest ::
+  AutoFillRequest
+newAutoFillRequest =
+  AutoFillRequest
+    { range = Core.Nothing,
+      sourceAndDestination = Core.Nothing,
+      useAlternateSeries = Core.Nothing
+    }
+
+instance Core.FromJSON AutoFillRequest where
+  parseJSON =
+    Core.withObject
+      "AutoFillRequest"
+      ( \o ->
+          AutoFillRequest
+            Core.<$> (o Core..:? "range")
+            Core.<*> (o Core..:? "sourceAndDestination")
+            Core.<*> (o Core..:? "useAlternateSeries")
+      )
+
+instance Core.ToJSON AutoFillRequest where
+  toJSON AutoFillRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("range" Core..=) Core.<$> range,
+            ("sourceAndDestination" Core..=) Core.<$> sourceAndDestination,
+            ("useAlternateSeries" Core..=) Core.<$> useAlternateSeries
+          ]
+      )
+
+-- | Automatically resizes one or more dimensions based on the contents of the cells in that dimension.
+--
+-- /See:/ 'newAutoResizeDimensionsRequest' smart constructor.
+data AutoResizeDimensionsRequest = AutoResizeDimensionsRequest
+  { -- | The dimensions on a data source sheet to automatically resize.
+    dataSourceSheetDimensions :: (Core.Maybe DataSourceSheetDimensionRange),
+    -- | The dimensions to automatically resize.
+    dimensions :: (Core.Maybe DimensionRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AutoResizeDimensionsRequest' with the minimum fields required to make a request.
+newAutoResizeDimensionsRequest ::
+  AutoResizeDimensionsRequest
+newAutoResizeDimensionsRequest =
+  AutoResizeDimensionsRequest
+    { dataSourceSheetDimensions =
+        Core.Nothing,
+      dimensions = Core.Nothing
+    }
+
+instance Core.FromJSON AutoResizeDimensionsRequest where
+  parseJSON =
+    Core.withObject
+      "AutoResizeDimensionsRequest"
+      ( \o ->
+          AutoResizeDimensionsRequest
+            Core.<$> (o Core..:? "dataSourceSheetDimensions")
+            Core.<*> (o Core..:? "dimensions")
+      )
+
+instance Core.ToJSON AutoResizeDimensionsRequest where
+  toJSON AutoResizeDimensionsRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceSheetDimensions" Core..=)
+              Core.<$> dataSourceSheetDimensions,
+            ("dimensions" Core..=) Core.<$> dimensions
+          ]
+      )
+
+-- | A banded (alternating colors) range in a sheet.
+--
+-- /See:/ 'newBandedRange' smart constructor.
+data BandedRange = BandedRange
+  { -- | The ID of the banded range.
+    bandedRangeId :: (Core.Maybe Core.Int32),
+    -- | 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.
+    columnProperties :: (Core.Maybe BandingProperties),
+    -- | The range over which these properties are applied.
+    range :: (Core.Maybe GridRange),
+    -- | 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.
+    rowProperties :: (Core.Maybe BandingProperties)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BandedRange' with the minimum fields required to make a request.
+newBandedRange ::
+  BandedRange
+newBandedRange =
+  BandedRange
+    { bandedRangeId = Core.Nothing,
+      columnProperties = Core.Nothing,
+      range = Core.Nothing,
+      rowProperties = Core.Nothing
+    }
+
+instance Core.FromJSON BandedRange where
+  parseJSON =
+    Core.withObject
+      "BandedRange"
+      ( \o ->
+          BandedRange
+            Core.<$> (o Core..:? "bandedRangeId")
+            Core.<*> (o Core..:? "columnProperties")
+            Core.<*> (o Core..:? "range")
+            Core.<*> (o Core..:? "rowProperties")
+      )
+
+instance Core.ToJSON BandedRange where
+  toJSON BandedRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bandedRangeId" Core..=) Core.<$> bandedRangeId,
+            ("columnProperties" Core..=) Core.<$> columnProperties,
+            ("range" Core..=) Core.<$> range,
+            ("rowProperties" Core..=) Core.<$> rowProperties
+          ]
+      )
+
+-- | 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:/ 'newBandingProperties' smart constructor.
+data BandingProperties = BandingProperties
+  { -- | The first color that is alternating. (Required) Deprecated: Use first/band/color_style.
+    firstBandColor :: (Core.Maybe Color),
+    -- | The first color that is alternating. (Required) If first/band/color is also set, this field takes precedence.
+    firstBandColorStyle :: (Core.Maybe ColorStyle),
+    -- | The color of the last row or column. If this field is not set, the last row or column is filled with either first/band/color or second/band/color, depending on the color of the previous row or column. Deprecated: Use footer/color/style.
+    footerColor :: (Core.Maybe Color),
+    -- | The color of the last row or column. If this field is not set, the last row or column is filled with either first/band/color or second/band/color, depending on the color of the previous row or column. If footer_color is also set, this field takes precedence.
+    footerColorStyle :: (Core.Maybe ColorStyle),
+    -- | The color of the first row or column. If this field is set, the first row or column is filled with this color and the colors alternate between first/band/color and second/band/color starting from the second row or column. Otherwise, the first row or column is filled with first/band/color and the colors proceed to alternate as they normally would. Deprecated: Use header/color/style.
+    headerColor :: (Core.Maybe Color),
+    -- | The color of the first row or column. If this field is set, the first row or column is filled with this color and the colors alternate between first/band/color and second/band/color starting from the second row or column. Otherwise, the first row or column is filled with first/band/color and the colors proceed to alternate as they normally would. If header_color is also set, this field takes precedence.
+    headerColorStyle :: (Core.Maybe ColorStyle),
+    -- | The second color that is alternating. (Required) Deprecated: Use second/band/color_style.
+    secondBandColor :: (Core.Maybe Color),
+    -- | The second color that is alternating. (Required) If second/band/color is also set, this field takes precedence.
+    secondBandColorStyle :: (Core.Maybe ColorStyle)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BandingProperties' with the minimum fields required to make a request.
+newBandingProperties ::
+  BandingProperties
+newBandingProperties =
+  BandingProperties
+    { firstBandColor = Core.Nothing,
+      firstBandColorStyle = Core.Nothing,
+      footerColor = Core.Nothing,
+      footerColorStyle = Core.Nothing,
+      headerColor = Core.Nothing,
+      headerColorStyle = Core.Nothing,
+      secondBandColor = Core.Nothing,
+      secondBandColorStyle = Core.Nothing
+    }
+
+instance Core.FromJSON BandingProperties where
+  parseJSON =
+    Core.withObject
+      "BandingProperties"
+      ( \o ->
+          BandingProperties
+            Core.<$> (o Core..:? "firstBandColor")
+            Core.<*> (o Core..:? "firstBandColorStyle")
+            Core.<*> (o Core..:? "footerColor")
+            Core.<*> (o Core..:? "footerColorStyle")
+            Core.<*> (o Core..:? "headerColor")
+            Core.<*> (o Core..:? "headerColorStyle")
+            Core.<*> (o Core..:? "secondBandColor")
+            Core.<*> (o Core..:? "secondBandColorStyle")
+      )
+
+instance Core.ToJSON BandingProperties where
+  toJSON BandingProperties {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("firstBandColor" Core..=) Core.<$> firstBandColor,
+            ("firstBandColorStyle" Core..=) Core.<$> firstBandColorStyle,
+            ("footerColor" Core..=) Core.<$> footerColor,
+            ("footerColorStyle" Core..=) Core.<$> footerColorStyle,
+            ("headerColor" Core..=) Core.<$> headerColor,
+            ("headerColorStyle" Core..=) Core.<$> headerColorStyle,
+            ("secondBandColor" Core..=) Core.<$> secondBandColor,
+            ("secondBandColorStyle" Core..=) Core.<$> secondBandColorStyle
+          ]
+      )
+
+-- | Formatting options for baseline value.
+--
+-- /See:/ 'newBaselineValueFormat' smart constructor.
+data BaselineValueFormat = BaselineValueFormat
+  { -- | The comparison type of key value with baseline value.
+    comparisonType :: (Core.Maybe BaselineValueFormat_ComparisonType),
+    -- | Description which is appended after the baseline value. This field is optional.
+    description :: (Core.Maybe Core.Text),
+    -- | Color to be used, in case baseline value represents a negative change for key value. This field is optional. Deprecated: Use negative/color/style.
+    negativeColor :: (Core.Maybe Color),
+    -- | Color to be used, in case baseline value represents a negative change for key value. This field is optional. If negative_color is also set, this field takes precedence.
+    negativeColorStyle :: (Core.Maybe ColorStyle),
+    -- | Specifies the horizontal text positioning of baseline value. This field is optional. If not specified, default positioning is used.
+    position :: (Core.Maybe TextPosition),
+    -- | Color to be used, in case baseline value represents a positive change for key value. This field is optional. Deprecated: Use positive/color/style.
+    positiveColor :: (Core.Maybe Color),
+    -- | Color to be used, in case baseline value represents a positive change for key value. This field is optional. If positive_color is also set, this field takes precedence.
+    positiveColorStyle :: (Core.Maybe ColorStyle),
+    -- | Text formatting options for baseline value. The link field is not supported.
+    textFormat :: (Core.Maybe TextFormat)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BaselineValueFormat' with the minimum fields required to make a request.
+newBaselineValueFormat ::
+  BaselineValueFormat
+newBaselineValueFormat =
+  BaselineValueFormat
+    { comparisonType = Core.Nothing,
+      description = Core.Nothing,
+      negativeColor = Core.Nothing,
+      negativeColorStyle = Core.Nothing,
+      position = Core.Nothing,
+      positiveColor = Core.Nothing,
+      positiveColorStyle = Core.Nothing,
+      textFormat = Core.Nothing
+    }
+
+instance Core.FromJSON BaselineValueFormat where
+  parseJSON =
+    Core.withObject
+      "BaselineValueFormat"
+      ( \o ->
+          BaselineValueFormat
+            Core.<$> (o Core..:? "comparisonType")
+            Core.<*> (o Core..:? "description")
+            Core.<*> (o Core..:? "negativeColor")
+            Core.<*> (o Core..:? "negativeColorStyle")
+            Core.<*> (o Core..:? "position")
+            Core.<*> (o Core..:? "positiveColor")
+            Core.<*> (o Core..:? "positiveColorStyle")
+            Core.<*> (o Core..:? "textFormat")
+      )
+
+instance Core.ToJSON BaselineValueFormat where
+  toJSON BaselineValueFormat {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("comparisonType" Core..=) Core.<$> comparisonType,
+            ("description" Core..=) Core.<$> description,
+            ("negativeColor" Core..=) Core.<$> negativeColor,
+            ("negativeColorStyle" Core..=) Core.<$> negativeColorStyle,
+            ("position" Core..=) Core.<$> position,
+            ("positiveColor" Core..=) Core.<$> positiveColor,
+            ("positiveColorStyle" Core..=) Core.<$> positiveColorStyle,
+            ("textFormat" Core..=) Core.<$> textFormat
+          ]
+      )
+
+-- | An axis of the chart. A chart may not have more than one axis per axis position.
+--
+-- /See:/ 'newBasicChartAxis' smart constructor.
+data BasicChartAxis = BasicChartAxis
+  { -- | The format of the title. Only valid if the axis is not associated with the domain. The link field is not supported.
+    format :: (Core.Maybe TextFormat),
+    -- | The position of this axis.
+    position :: (Core.Maybe BasicChartAxis_Position),
+    -- | The title of this axis. If set, this overrides any title inferred from headers of the data.
+    title :: (Core.Maybe Core.Text),
+    -- | The axis title text position.
+    titleTextPosition :: (Core.Maybe TextPosition),
+    -- | The view window options for this axis.
+    viewWindowOptions :: (Core.Maybe ChartAxisViewWindowOptions)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BasicChartAxis' with the minimum fields required to make a request.
+newBasicChartAxis ::
+  BasicChartAxis
+newBasicChartAxis =
+  BasicChartAxis
+    { format = Core.Nothing,
+      position = Core.Nothing,
+      title = Core.Nothing,
+      titleTextPosition = Core.Nothing,
+      viewWindowOptions = Core.Nothing
+    }
+
+instance Core.FromJSON BasicChartAxis where
+  parseJSON =
+    Core.withObject
+      "BasicChartAxis"
+      ( \o ->
+          BasicChartAxis
+            Core.<$> (o Core..:? "format")
+            Core.<*> (o Core..:? "position")
+            Core.<*> (o Core..:? "title")
+            Core.<*> (o Core..:? "titleTextPosition")
+            Core.<*> (o Core..:? "viewWindowOptions")
+      )
+
+instance Core.ToJSON BasicChartAxis where
+  toJSON BasicChartAxis {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("format" Core..=) Core.<$> format,
+            ("position" Core..=) Core.<$> position,
+            ("title" Core..=) Core.<$> title,
+            ("titleTextPosition" Core..=) Core.<$> titleTextPosition,
+            ("viewWindowOptions" Core..=) Core.<$> viewWindowOptions
+          ]
+      )
+
+-- | The domain of a chart. For example, if charting stock prices over time, this would be the date.
+--
+-- /See:/ 'newBasicChartDomain' smart constructor.
+data BasicChartDomain = BasicChartDomain
+  { -- | The data of the domain. For example, if charting stock prices over time, this is the data representing the dates.
+    domain :: (Core.Maybe ChartData),
+    -- | True to reverse the order of the domain values (horizontal axis).
+    reversed :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BasicChartDomain' with the minimum fields required to make a request.
+newBasicChartDomain ::
+  BasicChartDomain
+newBasicChartDomain =
+  BasicChartDomain {domain = Core.Nothing, reversed = Core.Nothing}
+
+instance Core.FromJSON BasicChartDomain where
+  parseJSON =
+    Core.withObject
+      "BasicChartDomain"
+      ( \o ->
+          BasicChartDomain
+            Core.<$> (o Core..:? "domain")
+            Core.<*> (o Core..:? "reversed")
+      )
+
+instance Core.ToJSON BasicChartDomain where
+  toJSON BasicChartDomain {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("domain" Core..=) Core.<$> domain,
+            ("reversed" Core..=) Core.<$> reversed
+          ]
+      )
+
+-- | 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:/ 'newBasicChartSeries' smart constructor.
+data BasicChartSeries = BasicChartSeries
+  { -- | The color for elements (such as bars, lines, and points) associated with this series. If empty, a default color is used. Deprecated: Use color_style.
+    color :: (Core.Maybe Color),
+    -- | The color for elements (such as bars, lines, and points) associated with this series. If empty, a default color is used. If color is also set, this field takes precedence.
+    colorStyle :: (Core.Maybe ColorStyle),
+    -- | Information about the data labels for this series.
+    dataLabel :: (Core.Maybe DataLabel),
+    -- | 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.
+    lineStyle :: (Core.Maybe LineStyle),
+    -- | The style for points associated with this series. Valid only if the chartType is AREA, LINE, or SCATTER. COMBO charts are also supported if the series chart type is AREA, LINE, or SCATTER. If empty, a default point style is used.
+    pointStyle :: (Core.Maybe PointStyle),
+    -- | The data being visualized in this chart series.
+    series :: (Core.Maybe ChartData),
+    -- | Style override settings for series data points.
+    styleOverrides :: (Core.Maybe [BasicSeriesDataPointStyleOverride]),
+    -- | 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.
+    targetAxis :: (Core.Maybe BasicChartSeries_TargetAxis),
+    -- | 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.
+    type' :: (Core.Maybe BasicChartSeries_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BasicChartSeries' with the minimum fields required to make a request.
+newBasicChartSeries ::
+  BasicChartSeries
+newBasicChartSeries =
+  BasicChartSeries
+    { color = Core.Nothing,
+      colorStyle = Core.Nothing,
+      dataLabel = Core.Nothing,
+      lineStyle = Core.Nothing,
+      pointStyle = Core.Nothing,
+      series = Core.Nothing,
+      styleOverrides = Core.Nothing,
+      targetAxis = Core.Nothing,
+      type' = Core.Nothing
+    }
+
+instance Core.FromJSON BasicChartSeries where
+  parseJSON =
+    Core.withObject
+      "BasicChartSeries"
+      ( \o ->
+          BasicChartSeries
+            Core.<$> (o Core..:? "color")
+            Core.<*> (o Core..:? "colorStyle")
+            Core.<*> (o Core..:? "dataLabel")
+            Core.<*> (o Core..:? "lineStyle")
+            Core.<*> (o Core..:? "pointStyle")
+            Core.<*> (o Core..:? "series")
+            Core.<*> (o Core..:? "styleOverrides")
+            Core.<*> (o Core..:? "targetAxis")
+            Core.<*> (o Core..:? "type")
+      )
+
+instance Core.ToJSON BasicChartSeries where
+  toJSON BasicChartSeries {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("color" Core..=) Core.<$> color,
+            ("colorStyle" Core..=) Core.<$> colorStyle,
+            ("dataLabel" Core..=) Core.<$> dataLabel,
+            ("lineStyle" Core..=) Core.<$> lineStyle,
+            ("pointStyle" Core..=) Core.<$> pointStyle,
+            ("series" Core..=) Core.<$> series,
+            ("styleOverrides" Core..=) Core.<$> styleOverrides,
+            ("targetAxis" Core..=) Core.<$> targetAxis,
+            ("type" Core..=) Core.<$> type'
+          ]
+      )
+
+-- | The specification for a basic chart. See BasicChartType for the list of charts this supports.
+--
+-- /See:/ 'newBasicChartSpec' smart constructor.
+data BasicChartSpec = BasicChartSpec
+  { -- | The axis on the chart.
+    axis :: (Core.Maybe [BasicChartAxis]),
+    -- | The type of the chart.
+    chartType :: (Core.Maybe BasicChartSpec_ChartType),
+    -- | The behavior of tooltips and data highlighting when hovering on data and chart area.
+    compareMode :: (Core.Maybe BasicChartSpec_CompareMode),
+    -- | The domain of data this is charting. Only a single domain is supported.
+    domains :: (Core.Maybe [BasicChartDomain]),
+    -- | 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.)
+    headerCount :: (Core.Maybe Core.Int32),
+    -- | 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.
+    interpolateNulls :: (Core.Maybe Core.Bool),
+    -- | The position of the chart legend.
+    legendPosition :: (Core.Maybe BasicChartSpec_LegendPosition),
+    -- | Gets whether all lines should be rendered smooth or straight by default. Applies to Line charts.
+    lineSmoothing :: (Core.Maybe Core.Bool),
+    -- | The data this chart is visualizing.
+    series :: (Core.Maybe [BasicChartSeries]),
+    -- | The stacked type for charts that support vertical stacking. Applies to Area, Bar, Column, Combo, and Stepped Area charts.
+    stackedType :: (Core.Maybe BasicChartSpec_StackedType),
+    -- | True to make the chart 3D. Applies to Bar and Column charts.
+    threeDimensional :: (Core.Maybe Core.Bool),
+    -- | Controls whether to display additional data labels on stacked charts which sum the total value of all stacked values at each value along the domain axis. These data labels can only be set when chart/type is one of AREA, BAR, COLUMN, COMBO or STEPPED/AREA and stacked/type is either STACKED or PERCENT/STACKED. In addition, for COMBO, this will only be supported if there is only one type of stackable series type or one type has more series than the others and each of the other types have no more than one series. For example, if a chart has two stacked bar series and one area series, the total data labels will be supported. If it has three bar series and two area series, total data labels are not allowed. Neither CUSTOM nor placement can be set on the total/data/label.
+    totalDataLabel :: (Core.Maybe DataLabel)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BasicChartSpec' with the minimum fields required to make a request.
+newBasicChartSpec ::
+  BasicChartSpec
+newBasicChartSpec =
+  BasicChartSpec
+    { axis = Core.Nothing,
+      chartType = Core.Nothing,
+      compareMode = Core.Nothing,
+      domains = Core.Nothing,
+      headerCount = Core.Nothing,
+      interpolateNulls = Core.Nothing,
+      legendPosition = Core.Nothing,
+      lineSmoothing = Core.Nothing,
+      series = Core.Nothing,
+      stackedType = Core.Nothing,
+      threeDimensional = Core.Nothing,
+      totalDataLabel = Core.Nothing
+    }
+
+instance Core.FromJSON BasicChartSpec where
+  parseJSON =
+    Core.withObject
+      "BasicChartSpec"
+      ( \o ->
+          BasicChartSpec
+            Core.<$> (o Core..:? "axis")
+            Core.<*> (o Core..:? "chartType")
+            Core.<*> (o Core..:? "compareMode")
+            Core.<*> (o Core..:? "domains")
+            Core.<*> (o Core..:? "headerCount")
+            Core.<*> (o Core..:? "interpolateNulls")
+            Core.<*> (o Core..:? "legendPosition")
+            Core.<*> (o Core..:? "lineSmoothing")
+            Core.<*> (o Core..:? "series")
+            Core.<*> (o Core..:? "stackedType")
+            Core.<*> (o Core..:? "threeDimensional")
+            Core.<*> (o Core..:? "totalDataLabel")
+      )
+
+instance Core.ToJSON BasicChartSpec where
+  toJSON BasicChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("axis" Core..=) Core.<$> axis,
+            ("chartType" Core..=) Core.<$> chartType,
+            ("compareMode" Core..=) Core.<$> compareMode,
+            ("domains" Core..=) Core.<$> domains,
+            ("headerCount" Core..=) Core.<$> headerCount,
+            ("interpolateNulls" Core..=) Core.<$> interpolateNulls,
+            ("legendPosition" Core..=) Core.<$> legendPosition,
+            ("lineSmoothing" Core..=) Core.<$> lineSmoothing,
+            ("series" Core..=) Core.<$> series,
+            ("stackedType" Core..=) Core.<$> stackedType,
+            ("threeDimensional" Core..=) Core.<$> threeDimensional,
+            ("totalDataLabel" Core..=) Core.<$> totalDataLabel
+          ]
+      )
+
+-- | The default filter associated with a sheet.
+--
+-- /See:/ 'newBasicFilter' smart constructor.
+data BasicFilter = BasicFilter
+  { -- | 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. This field is deprecated in favor of filter_specs.
+    criteria :: (Core.Maybe BasicFilter_Criteria),
+    -- | The filter criteria per column. Both criteria and filter_specs are populated in responses. If both fields are specified in an update request, this field takes precedence.
+    filterSpecs :: (Core.Maybe [FilterSpec]),
+    -- | The range the filter covers.
+    range :: (Core.Maybe GridRange),
+    -- | The sort order per column. Later specifications are used when values are equal in the earlier specifications.
+    sortSpecs :: (Core.Maybe [SortSpec])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BasicFilter' with the minimum fields required to make a request.
+newBasicFilter ::
+  BasicFilter
+newBasicFilter =
+  BasicFilter
+    { criteria = Core.Nothing,
+      filterSpecs = Core.Nothing,
+      range = Core.Nothing,
+      sortSpecs = Core.Nothing
+    }
+
+instance Core.FromJSON BasicFilter where
+  parseJSON =
+    Core.withObject
+      "BasicFilter"
+      ( \o ->
+          BasicFilter
+            Core.<$> (o Core..:? "criteria")
+            Core.<*> (o Core..:? "filterSpecs")
+            Core.<*> (o Core..:? "range")
+            Core.<*> (o Core..:? "sortSpecs")
+      )
+
+instance Core.ToJSON BasicFilter where
+  toJSON BasicFilter {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("criteria" Core..=) Core.<$> criteria,
+            ("filterSpecs" Core..=) Core.<$> filterSpecs,
+            ("range" Core..=) Core.<$> range,
+            ("sortSpecs" Core..=) Core.<$> sortSpecs
+          ]
+      )
+
+-- | 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. This field is deprecated in favor of filter_specs.
+--
+-- /See:/ 'newBasicFilter_Criteria' smart constructor.
+newtype BasicFilter_Criteria = BasicFilter_Criteria
+  { additional :: (Core.HashMap Core.Text FilterCriteria)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BasicFilter_Criteria' with the minimum fields required to make a request.
+newBasicFilter_Criteria ::
+  -- |  See 'additional'.
+  Core.HashMap Core.Text FilterCriteria ->
+  BasicFilter_Criteria
+newBasicFilter_Criteria additional =
+  BasicFilter_Criteria {additional = additional}
+
+instance Core.FromJSON BasicFilter_Criteria where
+  parseJSON =
+    Core.withObject
+      "BasicFilter_Criteria"
+      (\o -> BasicFilter_Criteria Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON BasicFilter_Criteria where
+  toJSON BasicFilter_Criteria {..} = Core.toJSON additional
+
+-- | Style override settings for a single series data point.
+--
+-- /See:/ 'newBasicSeriesDataPointStyleOverride' smart constructor.
+data BasicSeriesDataPointStyleOverride = BasicSeriesDataPointStyleOverride
+  { -- | Color of the series data point. If empty, the series default is used. Deprecated: Use color_style.
+    color :: (Core.Maybe Color),
+    -- | Color of the series data point. If empty, the series default is used. If color is also set, this field takes precedence.
+    colorStyle :: (Core.Maybe ColorStyle),
+    -- | The zero-based index of the series data point.
+    index :: (Core.Maybe Core.Int32),
+    -- | Point style of the series data point. Valid only if the chartType is AREA, LINE, or SCATTER. COMBO charts are also supported if the series chart type is AREA, LINE, or SCATTER. If empty, the series default is used.
+    pointStyle :: (Core.Maybe PointStyle)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BasicSeriesDataPointStyleOverride' with the minimum fields required to make a request.
+newBasicSeriesDataPointStyleOverride ::
+  BasicSeriesDataPointStyleOverride
+newBasicSeriesDataPointStyleOverride =
+  BasicSeriesDataPointStyleOverride
+    { color = Core.Nothing,
+      colorStyle = Core.Nothing,
+      index = Core.Nothing,
+      pointStyle = Core.Nothing
+    }
+
+instance Core.FromJSON BasicSeriesDataPointStyleOverride where
+  parseJSON =
+    Core.withObject
+      "BasicSeriesDataPointStyleOverride"
+      ( \o ->
+          BasicSeriesDataPointStyleOverride
+            Core.<$> (o Core..:? "color")
+            Core.<*> (o Core..:? "colorStyle")
+            Core.<*> (o Core..:? "index")
+            Core.<*> (o Core..:? "pointStyle")
+      )
+
+instance Core.ToJSON BasicSeriesDataPointStyleOverride where
+  toJSON BasicSeriesDataPointStyleOverride {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("color" Core..=) Core.<$> color,
+            ("colorStyle" Core..=) Core.<$> colorStyle,
+            ("index" Core..=) Core.<$> index,
+            ("pointStyle" Core..=) Core.<$> pointStyle
+          ]
+      )
+
+-- | The request for clearing more than one range selected by a DataFilter in a spreadsheet.
+--
+-- /See:/ 'newBatchClearValuesByDataFilterRequest' smart constructor.
+newtype BatchClearValuesByDataFilterRequest = BatchClearValuesByDataFilterRequest
+  { -- | The DataFilters used to determine which ranges to clear.
+    dataFilters :: (Core.Maybe [DataFilter])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchClearValuesByDataFilterRequest' with the minimum fields required to make a request.
+newBatchClearValuesByDataFilterRequest ::
+  BatchClearValuesByDataFilterRequest
+newBatchClearValuesByDataFilterRequest =
+  BatchClearValuesByDataFilterRequest {dataFilters = Core.Nothing}
+
+instance Core.FromJSON BatchClearValuesByDataFilterRequest where
+  parseJSON =
+    Core.withObject
+      "BatchClearValuesByDataFilterRequest"
+      ( \o ->
+          BatchClearValuesByDataFilterRequest
+            Core.<$> (o Core..:? "dataFilters")
+      )
+
+instance Core.ToJSON BatchClearValuesByDataFilterRequest where
+  toJSON BatchClearValuesByDataFilterRequest {..} =
+    Core.object
+      (Core.catMaybes [("dataFilters" Core..=) Core.<$> dataFilters])
+
+-- | The response when clearing a range of values selected with DataFilters in a spreadsheet.
+--
+-- /See:/ 'newBatchClearValuesByDataFilterResponse' smart constructor.
+data BatchClearValuesByDataFilterResponse = BatchClearValuesByDataFilterResponse
+  { -- | The ranges that were cleared, in </sheets/api/guides/concepts#cell A1 notation>. If the requests are for an unbounded range or a ranger larger than the bounds of the sheet, this is the actual ranges that were cleared, bounded to the sheet\'s limits.
+    clearedRanges :: (Core.Maybe [Core.Text]),
+    -- | The spreadsheet the updates were applied to.
+    spreadsheetId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchClearValuesByDataFilterResponse' with the minimum fields required to make a request.
+newBatchClearValuesByDataFilterResponse ::
+  BatchClearValuesByDataFilterResponse
+newBatchClearValuesByDataFilterResponse =
+  BatchClearValuesByDataFilterResponse
+    { clearedRanges =
+        Core.Nothing,
+      spreadsheetId = Core.Nothing
+    }
+
+instance Core.FromJSON BatchClearValuesByDataFilterResponse where
+  parseJSON =
+    Core.withObject
+      "BatchClearValuesByDataFilterResponse"
+      ( \o ->
+          BatchClearValuesByDataFilterResponse
+            Core.<$> (o Core..:? "clearedRanges")
+            Core.<*> (o Core..:? "spreadsheetId")
+      )
+
+instance Core.ToJSON BatchClearValuesByDataFilterResponse where
+  toJSON BatchClearValuesByDataFilterResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("clearedRanges" Core..=) Core.<$> clearedRanges,
+            ("spreadsheetId" Core..=) Core.<$> spreadsheetId
+          ]
+      )
+
+-- | The request for clearing more than one range of values in a spreadsheet.
+--
+-- /See:/ 'newBatchClearValuesRequest' smart constructor.
+newtype BatchClearValuesRequest = BatchClearValuesRequest
+  { -- | The ranges to clear, in </sheets/api/guides/concepts#cell A1 notation or R1C1 notation>.
+    ranges :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchClearValuesRequest' with the minimum fields required to make a request.
+newBatchClearValuesRequest ::
+  BatchClearValuesRequest
+newBatchClearValuesRequest =
+  BatchClearValuesRequest {ranges = Core.Nothing}
+
+instance Core.FromJSON BatchClearValuesRequest where
+  parseJSON =
+    Core.withObject
+      "BatchClearValuesRequest"
+      (\o -> BatchClearValuesRequest Core.<$> (o Core..:? "ranges"))
+
+instance Core.ToJSON BatchClearValuesRequest where
+  toJSON BatchClearValuesRequest {..} =
+    Core.object (Core.catMaybes [("ranges" Core..=) Core.<$> ranges])
+
+-- | The response when clearing a range of values in a spreadsheet.
+--
+-- /See:/ 'newBatchClearValuesResponse' smart constructor.
+data BatchClearValuesResponse = BatchClearValuesResponse
+  { -- | The ranges that were cleared, in A1 notation. If the requests are for an unbounded range or a ranger larger than the bounds of the sheet, this is the actual ranges that were cleared, bounded to the sheet\'s limits.
+    clearedRanges :: (Core.Maybe [Core.Text]),
+    -- | The spreadsheet the updates were applied to.
+    spreadsheetId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchClearValuesResponse' with the minimum fields required to make a request.
+newBatchClearValuesResponse ::
+  BatchClearValuesResponse
+newBatchClearValuesResponse =
+  BatchClearValuesResponse
+    { clearedRanges = Core.Nothing,
+      spreadsheetId = Core.Nothing
+    }
+
+instance Core.FromJSON BatchClearValuesResponse where
+  parseJSON =
+    Core.withObject
+      "BatchClearValuesResponse"
+      ( \o ->
+          BatchClearValuesResponse
+            Core.<$> (o Core..:? "clearedRanges")
+            Core.<*> (o Core..:? "spreadsheetId")
+      )
+
+instance Core.ToJSON BatchClearValuesResponse where
+  toJSON BatchClearValuesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("clearedRanges" Core..=) Core.<$> clearedRanges,
+            ("spreadsheetId" Core..=) Core.<$> spreadsheetId
+          ]
+      )
+
+-- | The request for retrieving a range of values in a spreadsheet selected by a set of DataFilters.
+--
+-- /See:/ 'newBatchGetValuesByDataFilterRequest' smart constructor.
+data BatchGetValuesByDataFilterRequest = BatchGetValuesByDataFilterRequest
+  { -- | The data filters used to match the ranges of values to retrieve. Ranges that match any of the specified data filters are included in the response.
+    dataFilters :: (Core.Maybe [DataFilter]),
+    -- | 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 SERIAL/NUMBER.
+    dateTimeRenderOption :: (Core.Maybe BatchGetValuesByDataFilterRequest_DateTimeRenderOption),
+    -- | 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@ returns @[[1,2],[3,4]]@, whereas a request that sets @majorDimension=COLUMNS@ returns @[[1,3],[2,4]]@.
+    majorDimension :: (Core.Maybe BatchGetValuesByDataFilterRequest_MajorDimension),
+    -- | How values should be represented in the output. The default render option is FORMATTED_VALUE.
+    valueRenderOption :: (Core.Maybe BatchGetValuesByDataFilterRequest_ValueRenderOption)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchGetValuesByDataFilterRequest' with the minimum fields required to make a request.
+newBatchGetValuesByDataFilterRequest ::
+  BatchGetValuesByDataFilterRequest
+newBatchGetValuesByDataFilterRequest =
+  BatchGetValuesByDataFilterRequest
+    { dataFilters = Core.Nothing,
+      dateTimeRenderOption = Core.Nothing,
+      majorDimension = Core.Nothing,
+      valueRenderOption = Core.Nothing
+    }
+
+instance Core.FromJSON BatchGetValuesByDataFilterRequest where
+  parseJSON =
+    Core.withObject
+      "BatchGetValuesByDataFilterRequest"
+      ( \o ->
+          BatchGetValuesByDataFilterRequest
+            Core.<$> (o Core..:? "dataFilters")
+            Core.<*> (o Core..:? "dateTimeRenderOption")
+            Core.<*> (o Core..:? "majorDimension")
+            Core.<*> (o Core..:? "valueRenderOption")
+      )
+
+instance Core.ToJSON BatchGetValuesByDataFilterRequest where
+  toJSON BatchGetValuesByDataFilterRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataFilters" Core..=) Core.<$> dataFilters,
+            ("dateTimeRenderOption" Core..=) Core.<$> dateTimeRenderOption,
+            ("majorDimension" Core..=) Core.<$> majorDimension,
+            ("valueRenderOption" Core..=) Core.<$> valueRenderOption
+          ]
+      )
+
+-- | The response when retrieving more than one range of values in a spreadsheet selected by DataFilters.
+--
+-- /See:/ 'newBatchGetValuesByDataFilterResponse' smart constructor.
+data BatchGetValuesByDataFilterResponse = BatchGetValuesByDataFilterResponse
+  { -- | The ID of the spreadsheet the data was retrieved from.
+    spreadsheetId :: (Core.Maybe Core.Text),
+    -- | The requested values with the list of data filters that matched them.
+    valueRanges :: (Core.Maybe [MatchedValueRange])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchGetValuesByDataFilterResponse' with the minimum fields required to make a request.
+newBatchGetValuesByDataFilterResponse ::
+  BatchGetValuesByDataFilterResponse
+newBatchGetValuesByDataFilterResponse =
+  BatchGetValuesByDataFilterResponse
+    { spreadsheetId = Core.Nothing,
+      valueRanges = Core.Nothing
+    }
+
+instance Core.FromJSON BatchGetValuesByDataFilterResponse where
+  parseJSON =
+    Core.withObject
+      "BatchGetValuesByDataFilterResponse"
+      ( \o ->
+          BatchGetValuesByDataFilterResponse
+            Core.<$> (o Core..:? "spreadsheetId")
+            Core.<*> (o Core..:? "valueRanges")
+      )
+
+instance Core.ToJSON BatchGetValuesByDataFilterResponse where
+  toJSON BatchGetValuesByDataFilterResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("spreadsheetId" Core..=) Core.<$> spreadsheetId,
+            ("valueRanges" Core..=) Core.<$> valueRanges
+          ]
+      )
+
+-- | The response when retrieving more than one range of values in a spreadsheet.
+--
+-- /See:/ 'newBatchGetValuesResponse' smart constructor.
+data BatchGetValuesResponse = BatchGetValuesResponse
+  { -- | The ID of the spreadsheet the data was retrieved from.
+    spreadsheetId :: (Core.Maybe Core.Text),
+    -- | The requested values. The order of the ValueRanges is the same as the order of the requested ranges.
+    valueRanges :: (Core.Maybe [ValueRange])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchGetValuesResponse' with the minimum fields required to make a request.
+newBatchGetValuesResponse ::
+  BatchGetValuesResponse
+newBatchGetValuesResponse =
+  BatchGetValuesResponse
+    { spreadsheetId = Core.Nothing,
+      valueRanges = Core.Nothing
+    }
+
+instance Core.FromJSON BatchGetValuesResponse where
+  parseJSON =
+    Core.withObject
+      "BatchGetValuesResponse"
+      ( \o ->
+          BatchGetValuesResponse
+            Core.<$> (o Core..:? "spreadsheetId")
+            Core.<*> (o Core..:? "valueRanges")
+      )
+
+instance Core.ToJSON BatchGetValuesResponse where
+  toJSON BatchGetValuesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("spreadsheetId" Core..=) Core.<$> spreadsheetId,
+            ("valueRanges" Core..=) Core.<$> valueRanges
+          ]
+      )
+
+-- | The request for updating any aspect of a spreadsheet.
+--
+-- /See:/ 'newBatchUpdateSpreadsheetRequest' smart constructor.
+data BatchUpdateSpreadsheetRequest = BatchUpdateSpreadsheetRequest
+  { -- | Determines if the update response should include the spreadsheet resource.
+    includeSpreadsheetInResponse :: (Core.Maybe Core.Bool),
+    -- | 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.
+    requests :: (Core.Maybe [Request']),
+    -- | True if grid data should be returned. Meaningful only if include/spreadsheet/in_response is \'true\'. This parameter is ignored if a field mask was set in the request.
+    responseIncludeGridData :: (Core.Maybe Core.Bool),
+    -- | Limits the ranges included in the response spreadsheet. Meaningful only if include/spreadsheet/in_response is \'true\'.
+    responseRanges :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateSpreadsheetRequest' with the minimum fields required to make a request.
+newBatchUpdateSpreadsheetRequest ::
+  BatchUpdateSpreadsheetRequest
+newBatchUpdateSpreadsheetRequest =
+  BatchUpdateSpreadsheetRequest
+    { includeSpreadsheetInResponse =
+        Core.Nothing,
+      requests = Core.Nothing,
+      responseIncludeGridData = Core.Nothing,
+      responseRanges = Core.Nothing
+    }
+
+instance Core.FromJSON BatchUpdateSpreadsheetRequest where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateSpreadsheetRequest"
+      ( \o ->
+          BatchUpdateSpreadsheetRequest
+            Core.<$> (o Core..:? "includeSpreadsheetInResponse")
+            Core.<*> (o Core..:? "requests")
+            Core.<*> (o Core..:? "responseIncludeGridData")
+            Core.<*> (o Core..:? "responseRanges")
+      )
+
+instance Core.ToJSON BatchUpdateSpreadsheetRequest where
+  toJSON BatchUpdateSpreadsheetRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("includeSpreadsheetInResponse" Core..=)
+              Core.<$> includeSpreadsheetInResponse,
+            ("requests" Core..=) Core.<$> requests,
+            ("responseIncludeGridData" Core..=)
+              Core.<$> responseIncludeGridData,
+            ("responseRanges" Core..=) Core.<$> responseRanges
+          ]
+      )
+
+-- | The reply for batch updating a spreadsheet.
+--
+-- /See:/ 'newBatchUpdateSpreadsheetResponse' smart constructor.
+data BatchUpdateSpreadsheetResponse = BatchUpdateSpreadsheetResponse
+  { -- | The reply of the updates. This maps 1:1 with the updates, although replies to some requests may be empty.
+    replies :: (Core.Maybe [Response]),
+    -- | The spreadsheet the updates were applied to.
+    spreadsheetId :: (Core.Maybe Core.Text),
+    -- | The spreadsheet after updates were applied. This is only set if BatchUpdateSpreadsheetRequest.include/spreadsheet/in_response is @true@.
+    updatedSpreadsheet :: (Core.Maybe Spreadsheet)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateSpreadsheetResponse' with the minimum fields required to make a request.
+newBatchUpdateSpreadsheetResponse ::
+  BatchUpdateSpreadsheetResponse
+newBatchUpdateSpreadsheetResponse =
+  BatchUpdateSpreadsheetResponse
+    { replies = Core.Nothing,
+      spreadsheetId = Core.Nothing,
+      updatedSpreadsheet = Core.Nothing
+    }
+
+instance Core.FromJSON BatchUpdateSpreadsheetResponse where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateSpreadsheetResponse"
+      ( \o ->
+          BatchUpdateSpreadsheetResponse
+            Core.<$> (o Core..:? "replies")
+            Core.<*> (o Core..:? "spreadsheetId")
+            Core.<*> (o Core..:? "updatedSpreadsheet")
+      )
+
+instance Core.ToJSON BatchUpdateSpreadsheetResponse where
+  toJSON BatchUpdateSpreadsheetResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("replies" Core..=) Core.<$> replies,
+            ("spreadsheetId" Core..=) Core.<$> spreadsheetId,
+            ("updatedSpreadsheet" Core..=) Core.<$> updatedSpreadsheet
+          ]
+      )
+
+-- | The request for updating more than one range of values in a spreadsheet.
+--
+-- /See:/ 'newBatchUpdateValuesByDataFilterRequest' smart constructor.
+data BatchUpdateValuesByDataFilterRequest = BatchUpdateValuesByDataFilterRequest
+  { -- | The new values to apply to the spreadsheet. If more than one range is matched by the specified DataFilter the specified values are applied to all of those ranges.
+    data' :: (Core.Maybe [DataFilterValueRange]),
+    -- | 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 contains the updated values. If the range to write was larger than the range actually written, the response includes all values in the requested range (excluding trailing empty rows and columns).
+    includeValuesInResponse :: (Core.Maybe Core.Bool),
+    -- | 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 SERIAL_NUMBER.
+    responseDateTimeRenderOption ::
+      ( Core.Maybe
+          BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption
+      ),
+    -- | Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
+    responseValueRenderOption ::
+      ( Core.Maybe
+          BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption
+      ),
+    -- | How the input data should be interpreted.
+    valueInputOption :: (Core.Maybe BatchUpdateValuesByDataFilterRequest_ValueInputOption)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateValuesByDataFilterRequest' with the minimum fields required to make a request.
+newBatchUpdateValuesByDataFilterRequest ::
+  BatchUpdateValuesByDataFilterRequest
+newBatchUpdateValuesByDataFilterRequest =
+  BatchUpdateValuesByDataFilterRequest
+    { data' = Core.Nothing,
+      includeValuesInResponse = Core.Nothing,
+      responseDateTimeRenderOption = Core.Nothing,
+      responseValueRenderOption = Core.Nothing,
+      valueInputOption = Core.Nothing
+    }
+
+instance Core.FromJSON BatchUpdateValuesByDataFilterRequest where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateValuesByDataFilterRequest"
+      ( \o ->
+          BatchUpdateValuesByDataFilterRequest
+            Core.<$> (o Core..:? "data")
+            Core.<*> (o Core..:? "includeValuesInResponse")
+            Core.<*> (o Core..:? "responseDateTimeRenderOption")
+            Core.<*> (o Core..:? "responseValueRenderOption")
+            Core.<*> (o Core..:? "valueInputOption")
+      )
+
+instance Core.ToJSON BatchUpdateValuesByDataFilterRequest where
+  toJSON BatchUpdateValuesByDataFilterRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("data" Core..=) Core.<$> data',
+            ("includeValuesInResponse" Core..=)
+              Core.<$> includeValuesInResponse,
+            ("responseDateTimeRenderOption" Core..=)
+              Core.<$> responseDateTimeRenderOption,
+            ("responseValueRenderOption" Core..=)
+              Core.<$> responseValueRenderOption,
+            ("valueInputOption" Core..=) Core.<$> valueInputOption
+          ]
+      )
+
+-- | The response when updating a range of values in a spreadsheet.
+--
+-- /See:/ 'newBatchUpdateValuesByDataFilterResponse' smart constructor.
+data BatchUpdateValuesByDataFilterResponse = BatchUpdateValuesByDataFilterResponse
+  { -- | The response for each range updated.
+    responses :: (Core.Maybe [UpdateValuesByDataFilterResponse]),
+    -- | The spreadsheet the updates were applied to.
+    spreadsheetId :: (Core.Maybe Core.Text),
+    -- | The total number of cells updated.
+    totalUpdatedCells :: (Core.Maybe Core.Int32),
+    -- | The total number of columns where at least one cell in the column was updated.
+    totalUpdatedColumns :: (Core.Maybe Core.Int32),
+    -- | The total number of rows where at least one cell in the row was updated.
+    totalUpdatedRows :: (Core.Maybe Core.Int32),
+    -- | The total number of sheets where at least one cell in the sheet was updated.
+    totalUpdatedSheets :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateValuesByDataFilterResponse' with the minimum fields required to make a request.
+newBatchUpdateValuesByDataFilterResponse ::
+  BatchUpdateValuesByDataFilterResponse
+newBatchUpdateValuesByDataFilterResponse =
+  BatchUpdateValuesByDataFilterResponse
+    { responses = Core.Nothing,
+      spreadsheetId = Core.Nothing,
+      totalUpdatedCells = Core.Nothing,
+      totalUpdatedColumns = Core.Nothing,
+      totalUpdatedRows = Core.Nothing,
+      totalUpdatedSheets = Core.Nothing
+    }
+
+instance Core.FromJSON BatchUpdateValuesByDataFilterResponse where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateValuesByDataFilterResponse"
+      ( \o ->
+          BatchUpdateValuesByDataFilterResponse
+            Core.<$> (o Core..:? "responses")
+            Core.<*> (o Core..:? "spreadsheetId")
+            Core.<*> (o Core..:? "totalUpdatedCells")
+            Core.<*> (o Core..:? "totalUpdatedColumns")
+            Core.<*> (o Core..:? "totalUpdatedRows")
+            Core.<*> (o Core..:? "totalUpdatedSheets")
+      )
+
+instance Core.ToJSON BatchUpdateValuesByDataFilterResponse where
+  toJSON BatchUpdateValuesByDataFilterResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("responses" Core..=) Core.<$> responses,
+            ("spreadsheetId" Core..=) Core.<$> spreadsheetId,
+            ("totalUpdatedCells" Core..=) Core.<$> totalUpdatedCells,
+            ("totalUpdatedColumns" Core..=) Core.<$> totalUpdatedColumns,
+            ("totalUpdatedRows" Core..=) Core.<$> totalUpdatedRows,
+            ("totalUpdatedSheets" Core..=) Core.<$> totalUpdatedSheets
+          ]
+      )
+
+-- | The request for updating more than one range of values in a spreadsheet.
+--
+-- /See:/ 'newBatchUpdateValuesRequest' smart constructor.
+data BatchUpdateValuesRequest = BatchUpdateValuesRequest
+  { -- | The new values to apply to the spreadsheet.
+    data' :: (Core.Maybe [ValueRange]),
+    -- | 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 contains the updated values. If the range to write was larger than the range actually written, the response includes all values in the requested range (excluding trailing empty rows and columns).
+    includeValuesInResponse :: (Core.Maybe Core.Bool),
+    -- | 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 SERIAL_NUMBER.
+    responseDateTimeRenderOption :: (Core.Maybe BatchUpdateValuesRequest_ResponseDateTimeRenderOption),
+    -- | Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
+    responseValueRenderOption :: (Core.Maybe BatchUpdateValuesRequest_ResponseValueRenderOption),
+    -- | How the input data should be interpreted.
+    valueInputOption :: (Core.Maybe BatchUpdateValuesRequest_ValueInputOption)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateValuesRequest' with the minimum fields required to make a request.
+newBatchUpdateValuesRequest ::
+  BatchUpdateValuesRequest
+newBatchUpdateValuesRequest =
+  BatchUpdateValuesRequest
+    { data' = Core.Nothing,
+      includeValuesInResponse = Core.Nothing,
+      responseDateTimeRenderOption = Core.Nothing,
+      responseValueRenderOption = Core.Nothing,
+      valueInputOption = Core.Nothing
+    }
+
+instance Core.FromJSON BatchUpdateValuesRequest where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateValuesRequest"
+      ( \o ->
+          BatchUpdateValuesRequest
+            Core.<$> (o Core..:? "data")
+            Core.<*> (o Core..:? "includeValuesInResponse")
+            Core.<*> (o Core..:? "responseDateTimeRenderOption")
+            Core.<*> (o Core..:? "responseValueRenderOption")
+            Core.<*> (o Core..:? "valueInputOption")
+      )
+
+instance Core.ToJSON BatchUpdateValuesRequest where
+  toJSON BatchUpdateValuesRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("data" Core..=) Core.<$> data',
+            ("includeValuesInResponse" Core..=)
+              Core.<$> includeValuesInResponse,
+            ("responseDateTimeRenderOption" Core..=)
+              Core.<$> responseDateTimeRenderOption,
+            ("responseValueRenderOption" Core..=)
+              Core.<$> responseValueRenderOption,
+            ("valueInputOption" Core..=) Core.<$> valueInputOption
+          ]
+      )
+
+-- | The response when updating a range of values in a spreadsheet.
+--
+-- /See:/ 'newBatchUpdateValuesResponse' smart constructor.
+data BatchUpdateValuesResponse = BatchUpdateValuesResponse
+  { -- | One UpdateValuesResponse per requested range, in the same order as the requests appeared.
+    responses :: (Core.Maybe [UpdateValuesResponse]),
+    -- | The spreadsheet the updates were applied to.
+    spreadsheetId :: (Core.Maybe Core.Text),
+    -- | The total number of cells updated.
+    totalUpdatedCells :: (Core.Maybe Core.Int32),
+    -- | The total number of columns where at least one cell in the column was updated.
+    totalUpdatedColumns :: (Core.Maybe Core.Int32),
+    -- | The total number of rows where at least one cell in the row was updated.
+    totalUpdatedRows :: (Core.Maybe Core.Int32),
+    -- | The total number of sheets where at least one cell in the sheet was updated.
+    totalUpdatedSheets :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BatchUpdateValuesResponse' with the minimum fields required to make a request.
+newBatchUpdateValuesResponse ::
+  BatchUpdateValuesResponse
+newBatchUpdateValuesResponse =
+  BatchUpdateValuesResponse
+    { responses = Core.Nothing,
+      spreadsheetId = Core.Nothing,
+      totalUpdatedCells = Core.Nothing,
+      totalUpdatedColumns = Core.Nothing,
+      totalUpdatedRows = Core.Nothing,
+      totalUpdatedSheets = Core.Nothing
+    }
+
+instance Core.FromJSON BatchUpdateValuesResponse where
+  parseJSON =
+    Core.withObject
+      "BatchUpdateValuesResponse"
+      ( \o ->
+          BatchUpdateValuesResponse
+            Core.<$> (o Core..:? "responses")
+            Core.<*> (o Core..:? "spreadsheetId")
+            Core.<*> (o Core..:? "totalUpdatedCells")
+            Core.<*> (o Core..:? "totalUpdatedColumns")
+            Core.<*> (o Core..:? "totalUpdatedRows")
+            Core.<*> (o Core..:? "totalUpdatedSheets")
+      )
+
+instance Core.ToJSON BatchUpdateValuesResponse where
+  toJSON BatchUpdateValuesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("responses" Core..=) Core.<$> responses,
+            ("spreadsheetId" Core..=) Core.<$> spreadsheetId,
+            ("totalUpdatedCells" Core..=) Core.<$> totalUpdatedCells,
+            ("totalUpdatedColumns" Core..=) Core.<$> totalUpdatedColumns,
+            ("totalUpdatedRows" Core..=) Core.<$> totalUpdatedRows,
+            ("totalUpdatedSheets" Core..=) Core.<$> totalUpdatedSheets
+          ]
+      )
+
+-- | The specification of a BigQuery data source that\'s connected to a sheet.
+--
+-- /See:/ 'newBigQueryDataSourceSpec' smart constructor.
+data BigQueryDataSourceSpec = BigQueryDataSourceSpec
+  { -- | The ID of a BigQuery enabled Google Cloud project with a billing account attached. For any queries executed against the data source, the project is charged.
+    projectId :: (Core.Maybe Core.Text),
+    -- | A BigQueryQuerySpec.
+    querySpec :: (Core.Maybe BigQueryQuerySpec),
+    -- | A BigQueryTableSpec.
+    tableSpec :: (Core.Maybe BigQueryTableSpec)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BigQueryDataSourceSpec' with the minimum fields required to make a request.
+newBigQueryDataSourceSpec ::
+  BigQueryDataSourceSpec
+newBigQueryDataSourceSpec =
+  BigQueryDataSourceSpec
+    { projectId = Core.Nothing,
+      querySpec = Core.Nothing,
+      tableSpec = Core.Nothing
+    }
+
+instance Core.FromJSON BigQueryDataSourceSpec where
+  parseJSON =
+    Core.withObject
+      "BigQueryDataSourceSpec"
+      ( \o ->
+          BigQueryDataSourceSpec
+            Core.<$> (o Core..:? "projectId")
+            Core.<*> (o Core..:? "querySpec")
+            Core.<*> (o Core..:? "tableSpec")
+      )
+
+instance Core.ToJSON BigQueryDataSourceSpec where
+  toJSON BigQueryDataSourceSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("projectId" Core..=) Core.<$> projectId,
+            ("querySpec" Core..=) Core.<$> querySpec,
+            ("tableSpec" Core..=) Core.<$> tableSpec
+          ]
+      )
+
+-- | Specifies a custom BigQuery query.
+--
+-- /See:/ 'newBigQueryQuerySpec' smart constructor.
+newtype BigQueryQuerySpec = BigQueryQuerySpec
+  { -- | The raw query string.
+    rawQuery :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BigQueryQuerySpec' with the minimum fields required to make a request.
+newBigQueryQuerySpec ::
+  BigQueryQuerySpec
+newBigQueryQuerySpec = BigQueryQuerySpec {rawQuery = Core.Nothing}
+
+instance Core.FromJSON BigQueryQuerySpec where
+  parseJSON =
+    Core.withObject
+      "BigQueryQuerySpec"
+      (\o -> BigQueryQuerySpec Core.<$> (o Core..:? "rawQuery"))
+
+instance Core.ToJSON BigQueryQuerySpec where
+  toJSON BigQueryQuerySpec {..} =
+    Core.object
+      (Core.catMaybes [("rawQuery" Core..=) Core.<$> rawQuery])
+
+-- | Specifies a BigQuery table definition. Only <https://cloud.google.com/bigquery/docs/tables-intro native tables> are allowed.
+--
+-- /See:/ 'newBigQueryTableSpec' smart constructor.
+data BigQueryTableSpec = BigQueryTableSpec
+  { -- | The BigQuery dataset id.
+    datasetId :: (Core.Maybe Core.Text),
+    -- | The BigQuery table id.
+    tableId :: (Core.Maybe Core.Text),
+    -- | The ID of a BigQuery project the table belongs to. If not specified, the project_id is assumed.
+    tableProjectId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BigQueryTableSpec' with the minimum fields required to make a request.
+newBigQueryTableSpec ::
+  BigQueryTableSpec
+newBigQueryTableSpec =
+  BigQueryTableSpec
+    { datasetId = Core.Nothing,
+      tableId = Core.Nothing,
+      tableProjectId = Core.Nothing
+    }
+
+instance Core.FromJSON BigQueryTableSpec where
+  parseJSON =
+    Core.withObject
+      "BigQueryTableSpec"
+      ( \o ->
+          BigQueryTableSpec
+            Core.<$> (o Core..:? "datasetId")
+            Core.<*> (o Core..:? "tableId")
+            Core.<*> (o Core..:? "tableProjectId")
+      )
+
+instance Core.ToJSON BigQueryTableSpec where
+  toJSON BigQueryTableSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("datasetId" Core..=) Core.<$> datasetId,
+            ("tableId" Core..=) Core.<$> tableId,
+            ("tableProjectId" Core..=) Core.<$> tableProjectId
+          ]
+      )
+
+-- | A condition that can evaluate to true or false. BooleanConditions are used by conditional formatting, data validation, and the criteria in filters.
+--
+-- /See:/ 'newBooleanCondition' smart constructor.
+data BooleanCondition = BooleanCondition
+  { -- | The type of condition.
+    type' :: (Core.Maybe BooleanCondition_Type),
+    -- | 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.
+    values :: (Core.Maybe [ConditionValue])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BooleanCondition' with the minimum fields required to make a request.
+newBooleanCondition ::
+  BooleanCondition
+newBooleanCondition =
+  BooleanCondition {type' = Core.Nothing, values = Core.Nothing}
+
+instance Core.FromJSON BooleanCondition where
+  parseJSON =
+    Core.withObject
+      "BooleanCondition"
+      ( \o ->
+          BooleanCondition
+            Core.<$> (o Core..:? "type")
+            Core.<*> (o Core..:? "values")
+      )
+
+instance Core.ToJSON BooleanCondition where
+  toJSON BooleanCondition {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("type" Core..=) Core.<$> type',
+            ("values" Core..=) Core.<$> values
+          ]
+      )
+
+-- | A rule that may or may not match, depending on the condition.
+--
+-- /See:/ 'newBooleanRule' smart constructor.
+data BooleanRule = BooleanRule
+  { -- | The condition of the rule. If the condition evaluates to true, the format is applied.
+    condition :: (Core.Maybe BooleanCondition),
+    -- | The format to apply. Conditional formatting can only apply a subset of formatting: bold, italic, strikethrough, foreground color and, background color.
+    format :: (Core.Maybe CellFormat)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BooleanRule' with the minimum fields required to make a request.
+newBooleanRule ::
+  BooleanRule
+newBooleanRule =
+  BooleanRule {condition = Core.Nothing, format = Core.Nothing}
+
+instance Core.FromJSON BooleanRule where
+  parseJSON =
+    Core.withObject
+      "BooleanRule"
+      ( \o ->
+          BooleanRule
+            Core.<$> (o Core..:? "condition")
+            Core.<*> (o Core..:? "format")
+      )
+
+instance Core.ToJSON BooleanRule where
+  toJSON BooleanRule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("condition" Core..=) Core.<$> condition,
+            ("format" Core..=) Core.<$> format
+          ]
+      )
+
+-- | A border along a cell.
+--
+-- /See:/ 'newBorder' smart constructor.
+data Border = Border
+  { -- | The color of the border. Deprecated: Use color_style.
+    color :: (Core.Maybe Color),
+    -- | The color of the border. If color is also set, this field takes precedence.
+    colorStyle :: (Core.Maybe ColorStyle),
+    -- | The style of the border.
+    style :: (Core.Maybe Border_Style),
+    -- | The width of the border, in pixels. Deprecated; the width is determined by the \"style\" field.
+    width :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Border' with the minimum fields required to make a request.
+newBorder ::
+  Border
+newBorder =
+  Border
+    { color = Core.Nothing,
+      colorStyle = Core.Nothing,
+      style = Core.Nothing,
+      width = Core.Nothing
+    }
+
+instance Core.FromJSON Border where
+  parseJSON =
+    Core.withObject
+      "Border"
+      ( \o ->
+          Border
+            Core.<$> (o Core..:? "color")
+            Core.<*> (o Core..:? "colorStyle")
+            Core.<*> (o Core..:? "style")
+            Core.<*> (o Core..:? "width")
+      )
+
+instance Core.ToJSON Border where
+  toJSON Border {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("color" Core..=) Core.<$> color,
+            ("colorStyle" Core..=) Core.<$> colorStyle,
+            ("style" Core..=) Core.<$> style,
+            ("width" Core..=) Core.<$> width
+          ]
+      )
+
+-- | The borders of the cell.
+--
+-- /See:/ 'newBorders' smart constructor.
+data Borders = Borders
+  { -- | The bottom border of the cell.
+    bottom :: (Core.Maybe Border),
+    -- | The left border of the cell.
+    left :: (Core.Maybe Border),
+    -- | The right border of the cell.
+    right :: (Core.Maybe Border),
+    -- | The top border of the cell.
+    top :: (Core.Maybe Border)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Borders' with the minimum fields required to make a request.
+newBorders ::
+  Borders
+newBorders =
+  Borders
+    { bottom = Core.Nothing,
+      left = Core.Nothing,
+      right = Core.Nothing,
+      top = Core.Nothing
+    }
+
+instance Core.FromJSON Borders where
+  parseJSON =
+    Core.withObject
+      "Borders"
+      ( \o ->
+          Borders
+            Core.<$> (o Core..:? "bottom")
+            Core.<*> (o Core..:? "left")
+            Core.<*> (o Core..:? "right")
+            Core.<*> (o Core..:? "top")
+      )
+
+instance Core.ToJSON Borders where
+  toJSON Borders {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bottom" Core..=) Core.<$> bottom,
+            ("left" Core..=) Core.<$> left,
+            ("right" Core..=) Core.<$> right,
+            ("top" Core..=) Core.<$> top
+          ]
+      )
+
+-- | A bubble chart.
+--
+-- /See:/ 'newBubbleChartSpec' smart constructor.
+data BubbleChartSpec = BubbleChartSpec
+  { -- | The bubble border color. Deprecated: Use bubble/border/color_style.
+    bubbleBorderColor :: (Core.Maybe Color),
+    -- | The bubble border color. If bubble/border/color is also set, this field takes precedence.
+    bubbleBorderColorStyle :: (Core.Maybe ColorStyle),
+    -- | The data containing the bubble labels. These do not need to be unique.
+    bubbleLabels :: (Core.Maybe ChartData),
+    -- | The max radius size of the bubbles, in pixels. If specified, the field must be a positive value.
+    bubbleMaxRadiusSize :: (Core.Maybe Core.Int32),
+    -- | The minimum radius size of the bubbles, in pixels. If specific, the field must be a positive value.
+    bubbleMinRadiusSize :: (Core.Maybe Core.Int32),
+    -- | The opacity of the bubbles between 0 and 1.0. 0 is fully transparent and 1 is fully opaque.
+    bubbleOpacity :: (Core.Maybe Core.Double),
+    -- | The data containing 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.
+    bubbleSizes :: (Core.Maybe ChartData),
+    -- | The format of the text inside the bubbles. Strikethrough, underline, and link are not supported.
+    bubbleTextStyle :: (Core.Maybe TextFormat),
+    -- | The data containing the bubble x-values. These values locate the bubbles in the chart horizontally.
+    domain :: (Core.Maybe ChartData),
+    -- | 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.
+    groupIds :: (Core.Maybe ChartData),
+    -- | Where the legend of the chart should be drawn.
+    legendPosition :: (Core.Maybe BubbleChartSpec_LegendPosition),
+    -- | The data containing the bubble y-values. These values locate the bubbles in the chart vertically.
+    series :: (Core.Maybe ChartData)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BubbleChartSpec' with the minimum fields required to make a request.
+newBubbleChartSpec ::
+  BubbleChartSpec
+newBubbleChartSpec =
+  BubbleChartSpec
+    { bubbleBorderColor = Core.Nothing,
+      bubbleBorderColorStyle = Core.Nothing,
+      bubbleLabels = Core.Nothing,
+      bubbleMaxRadiusSize = Core.Nothing,
+      bubbleMinRadiusSize = Core.Nothing,
+      bubbleOpacity = Core.Nothing,
+      bubbleSizes = Core.Nothing,
+      bubbleTextStyle = Core.Nothing,
+      domain = Core.Nothing,
+      groupIds = Core.Nothing,
+      legendPosition = Core.Nothing,
+      series = Core.Nothing
+    }
+
+instance Core.FromJSON BubbleChartSpec where
+  parseJSON =
+    Core.withObject
+      "BubbleChartSpec"
+      ( \o ->
+          BubbleChartSpec
+            Core.<$> (o Core..:? "bubbleBorderColor")
+            Core.<*> (o Core..:? "bubbleBorderColorStyle")
+            Core.<*> (o Core..:? "bubbleLabels")
+            Core.<*> (o Core..:? "bubbleMaxRadiusSize")
+            Core.<*> (o Core..:? "bubbleMinRadiusSize")
+            Core.<*> (o Core..:? "bubbleOpacity")
+            Core.<*> (o Core..:? "bubbleSizes")
+            Core.<*> (o Core..:? "bubbleTextStyle")
+            Core.<*> (o Core..:? "domain")
+            Core.<*> (o Core..:? "groupIds")
+            Core.<*> (o Core..:? "legendPosition")
+            Core.<*> (o Core..:? "series")
+      )
+
+instance Core.ToJSON BubbleChartSpec where
+  toJSON BubbleChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bubbleBorderColor" Core..=) Core.<$> bubbleBorderColor,
+            ("bubbleBorderColorStyle" Core..=) Core.<$> bubbleBorderColorStyle,
+            ("bubbleLabels" Core..=) Core.<$> bubbleLabels,
+            ("bubbleMaxRadiusSize" Core..=) Core.<$> bubbleMaxRadiusSize,
+            ("bubbleMinRadiusSize" Core..=) Core.<$> bubbleMinRadiusSize,
+            ("bubbleOpacity" Core..=) Core.<$> bubbleOpacity,
+            ("bubbleSizes" Core..=) Core.<$> bubbleSizes,
+            ("bubbleTextStyle" Core..=) Core.<$> bubbleTextStyle,
+            ("domain" Core..=) Core.<$> domain,
+            ("groupIds" Core..=) Core.<$> groupIds,
+            ("legendPosition" Core..=) Core.<$> legendPosition,
+            ("series" Core..=) Core.<$> series
+          ]
+      )
+
+-- | Cancels one or multiple refreshes of data source objects in the spreadsheet by the specified references. The request requires an additional @bigquery.readonly@ OAuth scope if you are cancelling a refresh on a BigQuery data source.
+--
+-- /See:/ 'newCancelDataSourceRefreshRequest' smart constructor.
+data CancelDataSourceRefreshRequest = CancelDataSourceRefreshRequest
+  { -- | Reference to a DataSource. If specified, cancels all associated data source object refreshes for this data source.
+    dataSourceId :: (Core.Maybe Core.Text),
+    -- | Cancels all existing data source object refreshes for all data sources in the spreadsheet.
+    isAll :: (Core.Maybe Core.Bool),
+    -- | References to data source objects whose refreshes are to be cancelled.
+    references :: (Core.Maybe DataSourceObjectReferences)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CancelDataSourceRefreshRequest' with the minimum fields required to make a request.
+newCancelDataSourceRefreshRequest ::
+  CancelDataSourceRefreshRequest
+newCancelDataSourceRefreshRequest =
+  CancelDataSourceRefreshRequest
+    { dataSourceId = Core.Nothing,
+      isAll = Core.Nothing,
+      references = Core.Nothing
+    }
+
+instance Core.FromJSON CancelDataSourceRefreshRequest where
+  parseJSON =
+    Core.withObject
+      "CancelDataSourceRefreshRequest"
+      ( \o ->
+          CancelDataSourceRefreshRequest
+            Core.<$> (o Core..:? "dataSourceId")
+            Core.<*> (o Core..:? "isAll")
+            Core.<*> (o Core..:? "references")
+      )
+
+instance Core.ToJSON CancelDataSourceRefreshRequest where
+  toJSON CancelDataSourceRefreshRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceId" Core..=) Core.<$> dataSourceId,
+            ("isAll" Core..=) Core.<$> isAll,
+            ("references" Core..=) Core.<$> references
+          ]
+      )
+
+-- | The response from cancelling one or multiple data source object refreshes.
+--
+-- /See:/ 'newCancelDataSourceRefreshResponse' smart constructor.
+newtype CancelDataSourceRefreshResponse = CancelDataSourceRefreshResponse
+  { -- | The cancellation statuses of refreshes of all data source objects specified in the request. If is_all is specified, the field contains only those in failure status. Refreshing and canceling refresh the same data source object is also not allowed in the same @batchUpdate@.
+    statuses :: (Core.Maybe [CancelDataSourceRefreshStatus])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CancelDataSourceRefreshResponse' with the minimum fields required to make a request.
+newCancelDataSourceRefreshResponse ::
+  CancelDataSourceRefreshResponse
+newCancelDataSourceRefreshResponse =
+  CancelDataSourceRefreshResponse {statuses = Core.Nothing}
+
+instance Core.FromJSON CancelDataSourceRefreshResponse where
+  parseJSON =
+    Core.withObject
+      "CancelDataSourceRefreshResponse"
+      ( \o ->
+          CancelDataSourceRefreshResponse Core.<$> (o Core..:? "statuses")
+      )
+
+instance Core.ToJSON CancelDataSourceRefreshResponse where
+  toJSON CancelDataSourceRefreshResponse {..} =
+    Core.object
+      (Core.catMaybes [("statuses" Core..=) Core.<$> statuses])
+
+-- | The status of cancelling a single data source object refresh.
+--
+-- /See:/ 'newCancelDataSourceRefreshStatus' smart constructor.
+data CancelDataSourceRefreshStatus = CancelDataSourceRefreshStatus
+  { -- | Reference to the data source object whose refresh is being cancelled.
+    reference :: (Core.Maybe DataSourceObjectReference),
+    -- | The cancellation status.
+    refreshCancellationStatus :: (Core.Maybe RefreshCancellationStatus)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CancelDataSourceRefreshStatus' with the minimum fields required to make a request.
+newCancelDataSourceRefreshStatus ::
+  CancelDataSourceRefreshStatus
+newCancelDataSourceRefreshStatus =
+  CancelDataSourceRefreshStatus
+    { reference = Core.Nothing,
+      refreshCancellationStatus = Core.Nothing
+    }
+
+instance Core.FromJSON CancelDataSourceRefreshStatus where
+  parseJSON =
+    Core.withObject
+      "CancelDataSourceRefreshStatus"
+      ( \o ->
+          CancelDataSourceRefreshStatus
+            Core.<$> (o Core..:? "reference")
+            Core.<*> (o Core..:? "refreshCancellationStatus")
+      )
+
+instance Core.ToJSON CancelDataSourceRefreshStatus where
+  toJSON CancelDataSourceRefreshStatus {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("reference" Core..=) Core.<$> reference,
+            ("refreshCancellationStatus" Core..=)
+              Core.<$> refreshCancellationStatus
+          ]
+      )
+
+-- | A candlestick chart.
+--
+-- /See:/ 'newCandlestickChartSpec' smart constructor.
+data CandlestickChartSpec = CandlestickChartSpec
+  { -- | The Candlestick chart data. Only one CandlestickData is supported.
+    data' :: (Core.Maybe [CandlestickData]),
+    -- | 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.
+    domain :: (Core.Maybe CandlestickDomain)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CandlestickChartSpec' with the minimum fields required to make a request.
+newCandlestickChartSpec ::
+  CandlestickChartSpec
+newCandlestickChartSpec =
+  CandlestickChartSpec {data' = Core.Nothing, domain = Core.Nothing}
+
+instance Core.FromJSON CandlestickChartSpec where
+  parseJSON =
+    Core.withObject
+      "CandlestickChartSpec"
+      ( \o ->
+          CandlestickChartSpec
+            Core.<$> (o Core..:? "data")
+            Core.<*> (o Core..:? "domain")
+      )
+
+instance Core.ToJSON CandlestickChartSpec where
+  toJSON CandlestickChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("data" Core..=) Core.<$> data',
+            ("domain" Core..=) Core.<$> domain
+          ]
+      )
+
+-- | The Candlestick chart data, each containing the low, open, close, and high values for a series.
+--
+-- /See:/ 'newCandlestickData' smart constructor.
+data CandlestickData = CandlestickData
+  { -- | 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.
+    closeSeries :: (Core.Maybe CandlestickSeries),
+    -- | The range data (vertical axis) for the high\/maximum value for each candle. This is the top of the candle\'s center line.
+    highSeries :: (Core.Maybe CandlestickSeries),
+    -- | The range data (vertical axis) for the low\/minimum value for each candle. This is the bottom of the candle\'s center line.
+    lowSeries :: (Core.Maybe CandlestickSeries),
+    -- | 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.
+    openSeries :: (Core.Maybe CandlestickSeries)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CandlestickData' with the minimum fields required to make a request.
+newCandlestickData ::
+  CandlestickData
+newCandlestickData =
+  CandlestickData
+    { closeSeries = Core.Nothing,
+      highSeries = Core.Nothing,
+      lowSeries = Core.Nothing,
+      openSeries = Core.Nothing
+    }
+
+instance Core.FromJSON CandlestickData where
+  parseJSON =
+    Core.withObject
+      "CandlestickData"
+      ( \o ->
+          CandlestickData
+            Core.<$> (o Core..:? "closeSeries")
+            Core.<*> (o Core..:? "highSeries")
+            Core.<*> (o Core..:? "lowSeries")
+            Core.<*> (o Core..:? "openSeries")
+      )
+
+instance Core.ToJSON CandlestickData where
+  toJSON CandlestickData {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("closeSeries" Core..=) Core.<$> closeSeries,
+            ("highSeries" Core..=) Core.<$> highSeries,
+            ("lowSeries" Core..=) Core.<$> lowSeries,
+            ("openSeries" Core..=) Core.<$> openSeries
+          ]
+      )
+
+-- | The domain of a CandlestickChart.
+--
+-- /See:/ 'newCandlestickDomain' smart constructor.
+data CandlestickDomain = CandlestickDomain
+  { -- | The data of the CandlestickDomain.
+    data' :: (Core.Maybe ChartData),
+    -- | True to reverse the order of the domain values (horizontal axis).
+    reversed :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CandlestickDomain' with the minimum fields required to make a request.
+newCandlestickDomain ::
+  CandlestickDomain
+newCandlestickDomain =
+  CandlestickDomain {data' = Core.Nothing, reversed = Core.Nothing}
+
+instance Core.FromJSON CandlestickDomain where
+  parseJSON =
+    Core.withObject
+      "CandlestickDomain"
+      ( \o ->
+          CandlestickDomain
+            Core.<$> (o Core..:? "data")
+            Core.<*> (o Core..:? "reversed")
+      )
+
+instance Core.ToJSON CandlestickDomain where
+  toJSON CandlestickDomain {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("data" Core..=) Core.<$> data',
+            ("reversed" Core..=) Core.<$> reversed
+          ]
+      )
+
+-- | The series of a CandlestickData.
+--
+-- /See:/ 'newCandlestickSeries' smart constructor.
+newtype CandlestickSeries = CandlestickSeries
+  { -- | The data of the CandlestickSeries.
+    data' :: (Core.Maybe ChartData)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CandlestickSeries' with the minimum fields required to make a request.
+newCandlestickSeries ::
+  CandlestickSeries
+newCandlestickSeries = CandlestickSeries {data' = Core.Nothing}
+
+instance Core.FromJSON CandlestickSeries where
+  parseJSON =
+    Core.withObject
+      "CandlestickSeries"
+      (\o -> CandlestickSeries Core.<$> (o Core..:? "data"))
+
+instance Core.ToJSON CandlestickSeries where
+  toJSON CandlestickSeries {..} =
+    Core.object (Core.catMaybes [("data" Core..=) Core.<$> data'])
+
+-- | Data about a specific cell.
+--
+-- /See:/ 'newCellData' smart constructor.
+data CellData = CellData
+  { -- | Output only. Information about a data source formula on the cell. The field is set if user/entered/value is a formula referencing some DATA_SOURCE sheet, e.g. @=SUM(DataSheet!Column)@.
+    dataSourceFormula :: (Core.Maybe DataSourceFormula),
+    -- | A data source table anchored at this cell. The size of data source table itself is computed dynamically based on its configuration. Only the first cell of the data source table contains the data source table definition. The other cells will contain the display values of the data source table result in their effective_value fields.
+    dataSourceTable :: (Core.Maybe DataSourceTable),
+    -- | A data validation rule on the cell, if any. When writing, the new data validation rule will overwrite any prior rule.
+    dataValidation :: (Core.Maybe DataValidationRule),
+    -- | 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.
+    effectiveFormat :: (Core.Maybe CellFormat),
+    -- | 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.
+    effectiveValue :: (Core.Maybe ExtendedValue),
+    -- | The formatted value of the cell. This is the value as it\'s shown to the user. This field is read-only.
+    formattedValue :: (Core.Maybe Core.Text),
+    -- | A hyperlink this cell points to, if any. If the cell contains multiple hyperlinks, this field will be empty. This field is read-only. To set it, use a @=HYPERLINK@ formula in the userEnteredValue.formulaValue field. A cell-level link can also be set from the userEnteredFormat.textFormat field. Alternatively, set a hyperlink in the textFormatRun.format.link field that spans the entire cell.
+    hyperlink :: (Core.Maybe Core.Text),
+    -- | Any note on the cell.
+    note :: (Core.Maybe Core.Text),
+    -- | 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.
+    pivotTable :: (Core.Maybe PivotTable),
+    -- | Runs of rich text applied to subsections of the cell. Runs are only valid on user entered strings, not formulas, bools, or numbers. Properties of a run start at a specific index in the text and continue until the next run. Runs will inherit 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.
+    textFormatRuns :: (Core.Maybe [TextFormatRun]),
+    -- | The format the user entered for the cell. When writing, the new format will be merged with the existing format.
+    userEnteredFormat :: (Core.Maybe CellFormat),
+    -- | 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.
+    userEnteredValue :: (Core.Maybe ExtendedValue)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CellData' with the minimum fields required to make a request.
+newCellData ::
+  CellData
+newCellData =
+  CellData
+    { dataSourceFormula = Core.Nothing,
+      dataSourceTable = Core.Nothing,
+      dataValidation = Core.Nothing,
+      effectiveFormat = Core.Nothing,
+      effectiveValue = Core.Nothing,
+      formattedValue = Core.Nothing,
+      hyperlink = Core.Nothing,
+      note = Core.Nothing,
+      pivotTable = Core.Nothing,
+      textFormatRuns = Core.Nothing,
+      userEnteredFormat = Core.Nothing,
+      userEnteredValue = Core.Nothing
+    }
+
+instance Core.FromJSON CellData where
+  parseJSON =
+    Core.withObject
+      "CellData"
+      ( \o ->
+          CellData
+            Core.<$> (o Core..:? "dataSourceFormula")
+            Core.<*> (o Core..:? "dataSourceTable")
+            Core.<*> (o Core..:? "dataValidation")
+            Core.<*> (o Core..:? "effectiveFormat")
+            Core.<*> (o Core..:? "effectiveValue")
+            Core.<*> (o Core..:? "formattedValue")
+            Core.<*> (o Core..:? "hyperlink")
+            Core.<*> (o Core..:? "note")
+            Core.<*> (o Core..:? "pivotTable")
+            Core.<*> (o Core..:? "textFormatRuns")
+            Core.<*> (o Core..:? "userEnteredFormat")
+            Core.<*> (o Core..:? "userEnteredValue")
+      )
+
+instance Core.ToJSON CellData where
+  toJSON CellData {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceFormula" Core..=) Core.<$> dataSourceFormula,
+            ("dataSourceTable" Core..=) Core.<$> dataSourceTable,
+            ("dataValidation" Core..=) Core.<$> dataValidation,
+            ("effectiveFormat" Core..=) Core.<$> effectiveFormat,
+            ("effectiveValue" Core..=) Core.<$> effectiveValue,
+            ("formattedValue" Core..=) Core.<$> formattedValue,
+            ("hyperlink" Core..=) Core.<$> hyperlink,
+            ("note" Core..=) Core.<$> note,
+            ("pivotTable" Core..=) Core.<$> pivotTable,
+            ("textFormatRuns" Core..=) Core.<$> textFormatRuns,
+            ("userEnteredFormat" Core..=) Core.<$> userEnteredFormat,
+            ("userEnteredValue" Core..=) Core.<$> userEnteredValue
+          ]
+      )
+
+-- | The format of a cell.
+--
+-- /See:/ 'newCellFormat' smart constructor.
+data CellFormat = CellFormat
+  { -- | The background color of the cell. Deprecated: Use background/color/style.
+    backgroundColor :: (Core.Maybe Color),
+    -- | The background color of the cell. If background_color is also set, this field takes precedence.
+    backgroundColorStyle :: (Core.Maybe ColorStyle),
+    -- | The borders of the cell.
+    borders :: (Core.Maybe Borders),
+    -- | The horizontal alignment of the value in the cell.
+    horizontalAlignment :: (Core.Maybe CellFormat_HorizontalAlignment),
+    -- | If one exists, how a hyperlink should be displayed in the cell.
+    hyperlinkDisplayType :: (Core.Maybe CellFormat_HyperlinkDisplayType),
+    -- | A format describing how number values should be represented to the user.
+    numberFormat :: (Core.Maybe NumberFormat),
+    -- | The padding of the cell.
+    padding :: (Core.Maybe Padding),
+    -- | The direction of the text in the cell.
+    textDirection :: (Core.Maybe CellFormat_TextDirection),
+    -- | The format of the text in the cell (unless overridden by a format run). Setting a cell-level link here clears the cell\'s existing links. Setting the link field in a TextFormatRun takes precedence over the cell-level link.
+    textFormat :: (Core.Maybe TextFormat),
+    -- | The rotation applied to text in the cell.
+    textRotation :: (Core.Maybe TextRotation),
+    -- | The vertical alignment of the value in the cell.
+    verticalAlignment :: (Core.Maybe CellFormat_VerticalAlignment),
+    -- | The wrap strategy for the value in the cell.
+    wrapStrategy :: (Core.Maybe CellFormat_WrapStrategy)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CellFormat' with the minimum fields required to make a request.
+newCellFormat ::
+  CellFormat
+newCellFormat =
+  CellFormat
+    { backgroundColor = Core.Nothing,
+      backgroundColorStyle = Core.Nothing,
+      borders = Core.Nothing,
+      horizontalAlignment = Core.Nothing,
+      hyperlinkDisplayType = Core.Nothing,
+      numberFormat = Core.Nothing,
+      padding = Core.Nothing,
+      textDirection = Core.Nothing,
+      textFormat = Core.Nothing,
+      textRotation = Core.Nothing,
+      verticalAlignment = Core.Nothing,
+      wrapStrategy = Core.Nothing
+    }
+
+instance Core.FromJSON CellFormat where
+  parseJSON =
+    Core.withObject
+      "CellFormat"
+      ( \o ->
+          CellFormat
+            Core.<$> (o Core..:? "backgroundColor")
+            Core.<*> (o Core..:? "backgroundColorStyle")
+            Core.<*> (o Core..:? "borders")
+            Core.<*> (o Core..:? "horizontalAlignment")
+            Core.<*> (o Core..:? "hyperlinkDisplayType")
+            Core.<*> (o Core..:? "numberFormat")
+            Core.<*> (o Core..:? "padding")
+            Core.<*> (o Core..:? "textDirection")
+            Core.<*> (o Core..:? "textFormat")
+            Core.<*> (o Core..:? "textRotation")
+            Core.<*> (o Core..:? "verticalAlignment")
+            Core.<*> (o Core..:? "wrapStrategy")
+      )
+
+instance Core.ToJSON CellFormat where
+  toJSON CellFormat {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("backgroundColor" Core..=) Core.<$> backgroundColor,
+            ("backgroundColorStyle" Core..=) Core.<$> backgroundColorStyle,
+            ("borders" Core..=) Core.<$> borders,
+            ("horizontalAlignment" Core..=) Core.<$> horizontalAlignment,
+            ("hyperlinkDisplayType" Core..=) Core.<$> hyperlinkDisplayType,
+            ("numberFormat" Core..=) Core.<$> numberFormat,
+            ("padding" Core..=) Core.<$> padding,
+            ("textDirection" Core..=) Core.<$> textDirection,
+            ("textFormat" Core..=) Core.<$> textFormat,
+            ("textRotation" Core..=) Core.<$> textRotation,
+            ("verticalAlignment" Core..=) Core.<$> verticalAlignment,
+            ("wrapStrategy" Core..=) Core.<$> wrapStrategy
+          ]
+      )
+
+-- | The options that define a \"view window\" for a chart (such as the visible values in an axis).
+--
+-- /See:/ 'newChartAxisViewWindowOptions' smart constructor.
+data ChartAxisViewWindowOptions = ChartAxisViewWindowOptions
+  { -- | The maximum numeric value to be shown in this view window. If unset, will automatically determine a maximum value that looks good for the data.
+    viewWindowMax :: (Core.Maybe Core.Double),
+    -- | The minimum numeric value to be shown in this view window. If unset, will automatically determine a minimum value that looks good for the data.
+    viewWindowMin :: (Core.Maybe Core.Double),
+    -- | The view window\'s mode.
+    viewWindowMode :: (Core.Maybe ChartAxisViewWindowOptions_ViewWindowMode)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ChartAxisViewWindowOptions' with the minimum fields required to make a request.
+newChartAxisViewWindowOptions ::
+  ChartAxisViewWindowOptions
+newChartAxisViewWindowOptions =
+  ChartAxisViewWindowOptions
+    { viewWindowMax = Core.Nothing,
+      viewWindowMin = Core.Nothing,
+      viewWindowMode = Core.Nothing
+    }
+
+instance Core.FromJSON ChartAxisViewWindowOptions where
+  parseJSON =
+    Core.withObject
+      "ChartAxisViewWindowOptions"
+      ( \o ->
+          ChartAxisViewWindowOptions
+            Core.<$> (o Core..:? "viewWindowMax")
+            Core.<*> (o Core..:? "viewWindowMin")
+            Core.<*> (o Core..:? "viewWindowMode")
+      )
+
+instance Core.ToJSON ChartAxisViewWindowOptions where
+  toJSON ChartAxisViewWindowOptions {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("viewWindowMax" Core..=) Core.<$> viewWindowMax,
+            ("viewWindowMin" Core..=) Core.<$> viewWindowMin,
+            ("viewWindowMode" Core..=) Core.<$> viewWindowMode
+          ]
+      )
+
+-- | Custom number formatting options for chart attributes.
+--
+-- /See:/ 'newChartCustomNumberFormatOptions' smart constructor.
+data ChartCustomNumberFormatOptions = ChartCustomNumberFormatOptions
+  { -- | Custom prefix to be prepended to the chart attribute. This field is optional.
+    prefix :: (Core.Maybe Core.Text),
+    -- | Custom suffix to be appended to the chart attribute. This field is optional.
+    suffix :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ChartCustomNumberFormatOptions' with the minimum fields required to make a request.
+newChartCustomNumberFormatOptions ::
+  ChartCustomNumberFormatOptions
+newChartCustomNumberFormatOptions =
+  ChartCustomNumberFormatOptions
+    { prefix = Core.Nothing,
+      suffix = Core.Nothing
+    }
+
+instance Core.FromJSON ChartCustomNumberFormatOptions where
+  parseJSON =
+    Core.withObject
+      "ChartCustomNumberFormatOptions"
+      ( \o ->
+          ChartCustomNumberFormatOptions
+            Core.<$> (o Core..:? "prefix")
+            Core.<*> (o Core..:? "suffix")
+      )
+
+instance Core.ToJSON ChartCustomNumberFormatOptions where
+  toJSON ChartCustomNumberFormatOptions {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("prefix" Core..=) Core.<$> prefix,
+            ("suffix" Core..=) Core.<$> suffix
+          ]
+      )
+
+-- | The data included in a domain or series.
+--
+-- /See:/ 'newChartData' smart constructor.
+data ChartData = ChartData
+  { -- | The aggregation type for the series of a data source chart. Only supported for data source charts.
+    aggregateType :: (Core.Maybe ChartData_AggregateType),
+    -- | The reference to the data source column that the data reads from.
+    columnReference :: (Core.Maybe DataSourceColumnReference),
+    -- | The rule to group the data by if the ChartData backs the domain of a data source chart. Only supported for data source charts.
+    groupRule :: (Core.Maybe ChartGroupRule),
+    -- | The source ranges of the data.
+    sourceRange :: (Core.Maybe ChartSourceRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ChartData' with the minimum fields required to make a request.
+newChartData ::
+  ChartData
+newChartData =
+  ChartData
+    { aggregateType = Core.Nothing,
+      columnReference = Core.Nothing,
+      groupRule = Core.Nothing,
+      sourceRange = Core.Nothing
+    }
+
+instance Core.FromJSON ChartData where
+  parseJSON =
+    Core.withObject
+      "ChartData"
+      ( \o ->
+          ChartData
+            Core.<$> (o Core..:? "aggregateType")
+            Core.<*> (o Core..:? "columnReference")
+            Core.<*> (o Core..:? "groupRule")
+            Core.<*> (o Core..:? "sourceRange")
+      )
+
+instance Core.ToJSON ChartData where
+  toJSON ChartData {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("aggregateType" Core..=) Core.<$> aggregateType,
+            ("columnReference" Core..=) Core.<$> columnReference,
+            ("groupRule" Core..=) Core.<$> groupRule,
+            ("sourceRange" Core..=) Core.<$> sourceRange
+          ]
+      )
+
+-- | 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.
+--
+-- /See:/ 'newChartDateTimeRule' smart constructor.
+newtype ChartDateTimeRule = ChartDateTimeRule
+  { -- | The type of date-time grouping to apply.
+    type' :: (Core.Maybe ChartDateTimeRule_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ChartDateTimeRule' with the minimum fields required to make a request.
+newChartDateTimeRule ::
+  ChartDateTimeRule
+newChartDateTimeRule = ChartDateTimeRule {type' = Core.Nothing}
+
+instance Core.FromJSON ChartDateTimeRule where
+  parseJSON =
+    Core.withObject
+      "ChartDateTimeRule"
+      (\o -> ChartDateTimeRule Core.<$> (o Core..:? "type"))
+
+instance Core.ToJSON ChartDateTimeRule where
+  toJSON ChartDateTimeRule {..} =
+    Core.object (Core.catMaybes [("type" Core..=) Core.<$> type'])
+
+-- | An optional setting on the ChartData of the domain of a data source chart that defines buckets for the values in the domain rather than breaking out each individual value. For example, when plotting a data source chart, you can specify a histogram rule on the domain (it should only contain numeric values), grouping its values into buckets. Any values of a chart series that fall into the same bucket are aggregated based on the aggregate_type.
+--
+-- /See:/ 'newChartGroupRule' smart constructor.
+data ChartGroupRule = ChartGroupRule
+  { -- | A ChartDateTimeRule.
+    dateTimeRule :: (Core.Maybe ChartDateTimeRule),
+    -- | A ChartHistogramRule
+    histogramRule :: (Core.Maybe ChartHistogramRule)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ChartGroupRule' with the minimum fields required to make a request.
+newChartGroupRule ::
+  ChartGroupRule
+newChartGroupRule =
+  ChartGroupRule
+    { dateTimeRule = Core.Nothing,
+      histogramRule = Core.Nothing
+    }
+
+instance Core.FromJSON ChartGroupRule where
+  parseJSON =
+    Core.withObject
+      "ChartGroupRule"
+      ( \o ->
+          ChartGroupRule
+            Core.<$> (o Core..:? "dateTimeRule")
+            Core.<*> (o Core..:? "histogramRule")
+      )
+
+instance Core.ToJSON ChartGroupRule where
+  toJSON ChartGroupRule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dateTimeRule" Core..=) Core.<$> dateTimeRule,
+            ("histogramRule" Core..=) Core.<$> histogramRule
+          ]
+      )
+
+-- | Allows you to organize numeric values in a source data column into buckets of constant size.
+--
+-- /See:/ 'newChartHistogramRule' smart constructor.
+data ChartHistogramRule = ChartHistogramRule
+  { -- | The size of the buckets that are created. Must be positive.
+    intervalSize :: (Core.Maybe Core.Double),
+    -- | The maximum value at which items are placed into buckets. Values greater than the maximum are grouped into a single bucket. If omitted, it is determined by the maximum item value.
+    maxValue :: (Core.Maybe Core.Double),
+    -- | The minimum value at which items are placed into buckets. Values that are less than the minimum are grouped into a single bucket. If omitted, it is determined by the minimum item value.
+    minValue :: (Core.Maybe Core.Double)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ChartHistogramRule' with the minimum fields required to make a request.
+newChartHistogramRule ::
+  ChartHistogramRule
+newChartHistogramRule =
+  ChartHistogramRule
+    { intervalSize = Core.Nothing,
+      maxValue = Core.Nothing,
+      minValue = Core.Nothing
+    }
+
+instance Core.FromJSON ChartHistogramRule where
+  parseJSON =
+    Core.withObject
+      "ChartHistogramRule"
+      ( \o ->
+          ChartHistogramRule
+            Core.<$> (o Core..:? "intervalSize")
+            Core.<*> (o Core..:? "maxValue")
+            Core.<*> (o Core..:? "minValue")
+      )
+
+instance Core.ToJSON ChartHistogramRule where
+  toJSON ChartHistogramRule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("intervalSize" Core..=) Core.<$> intervalSize,
+            ("maxValue" Core..=) Core.<$> maxValue,
+            ("minValue" Core..=) Core.<$> minValue
+          ]
+      )
+
+-- | Source ranges for a chart.
+--
+-- /See:/ 'newChartSourceRange' smart constructor.
+newtype ChartSourceRange = ChartSourceRange
+  { -- | 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
+    sources :: (Core.Maybe [GridRange])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ChartSourceRange' with the minimum fields required to make a request.
+newChartSourceRange ::
+  ChartSourceRange
+newChartSourceRange = ChartSourceRange {sources = Core.Nothing}
+
+instance Core.FromJSON ChartSourceRange where
+  parseJSON =
+    Core.withObject
+      "ChartSourceRange"
+      (\o -> ChartSourceRange Core.<$> (o Core..:? "sources"))
+
+instance Core.ToJSON ChartSourceRange where
+  toJSON ChartSourceRange {..} =
+    Core.object
+      (Core.catMaybes [("sources" Core..=) Core.<$> sources])
+
+-- | The specifications of a chart.
+--
+-- /See:/ 'newChartSpec' smart constructor.
+data ChartSpec = ChartSpec
+  { -- | The alternative text that describes the chart. This is often used for accessibility.
+    altText :: (Core.Maybe Core.Text),
+    -- | The background color of the entire chart. Not applicable to Org charts. Deprecated: Use background/color/style.
+    backgroundColor :: (Core.Maybe Color),
+    -- | The background color of the entire chart. Not applicable to Org charts. If background_color is also set, this field takes precedence.
+    backgroundColorStyle :: (Core.Maybe ColorStyle),
+    -- | A basic chart specification, can be one of many kinds of charts. See BasicChartType for the list of all charts this supports.
+    basicChart :: (Core.Maybe BasicChartSpec),
+    -- | A bubble chart specification.
+    bubbleChart :: (Core.Maybe BubbleChartSpec),
+    -- | A candlestick chart specification.
+    candlestickChart :: (Core.Maybe CandlestickChartSpec),
+    -- | If present, the field contains data source chart specific properties.
+    dataSourceChartProperties :: (Core.Maybe DataSourceChartProperties),
+    -- | The filters applied to the source data of the chart. Only supported for data source charts.
+    filterSpecs :: (Core.Maybe [FilterSpec]),
+    -- | 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.
+    fontName :: (Core.Maybe Core.Text),
+    -- | Determines how the charts will use hidden rows or columns.
+    hiddenDimensionStrategy :: (Core.Maybe ChartSpec_HiddenDimensionStrategy),
+    -- | A histogram chart specification.
+    histogramChart :: (Core.Maybe HistogramChartSpec),
+    -- | 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.)
+    maximized :: (Core.Maybe Core.Bool),
+    -- | An org chart specification.
+    orgChart :: (Core.Maybe OrgChartSpec),
+    -- | A pie chart specification.
+    pieChart :: (Core.Maybe PieChartSpec),
+    -- | A scorecard chart specification.
+    scorecardChart :: (Core.Maybe ScorecardChartSpec),
+    -- | The order to sort the chart data by. Only a single sort spec is supported. Only supported for data source charts.
+    sortSpecs :: (Core.Maybe [SortSpec]),
+    -- | The subtitle of the chart.
+    subtitle :: (Core.Maybe Core.Text),
+    -- | The subtitle text format. Strikethrough, underline, and link are not supported.
+    subtitleTextFormat :: (Core.Maybe TextFormat),
+    -- | The subtitle text position. This field is optional.
+    subtitleTextPosition :: (Core.Maybe TextPosition),
+    -- | The title of the chart.
+    title :: (Core.Maybe Core.Text),
+    -- | The title text format. Strikethrough, underline, and link are not supported.
+    titleTextFormat :: (Core.Maybe TextFormat),
+    -- | The title text position. This field is optional.
+    titleTextPosition :: (Core.Maybe TextPosition),
+    -- | A treemap chart specification.
+    treemapChart :: (Core.Maybe TreemapChartSpec),
+    -- | A waterfall chart specification.
+    waterfallChart :: (Core.Maybe WaterfallChartSpec)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ChartSpec' with the minimum fields required to make a request.
+newChartSpec ::
+  ChartSpec
+newChartSpec =
+  ChartSpec
+    { altText = Core.Nothing,
+      backgroundColor = Core.Nothing,
+      backgroundColorStyle = Core.Nothing,
+      basicChart = Core.Nothing,
+      bubbleChart = Core.Nothing,
+      candlestickChart = Core.Nothing,
+      dataSourceChartProperties = Core.Nothing,
+      filterSpecs = Core.Nothing,
+      fontName = Core.Nothing,
+      hiddenDimensionStrategy = Core.Nothing,
+      histogramChart = Core.Nothing,
+      maximized = Core.Nothing,
+      orgChart = Core.Nothing,
+      pieChart = Core.Nothing,
+      scorecardChart = Core.Nothing,
+      sortSpecs = Core.Nothing,
+      subtitle = Core.Nothing,
+      subtitleTextFormat = Core.Nothing,
+      subtitleTextPosition = Core.Nothing,
+      title = Core.Nothing,
+      titleTextFormat = Core.Nothing,
+      titleTextPosition = Core.Nothing,
+      treemapChart = Core.Nothing,
+      waterfallChart = Core.Nothing
+    }
+
+instance Core.FromJSON ChartSpec where
+  parseJSON =
+    Core.withObject
+      "ChartSpec"
+      ( \o ->
+          ChartSpec
+            Core.<$> (o Core..:? "altText")
+            Core.<*> (o Core..:? "backgroundColor")
+            Core.<*> (o Core..:? "backgroundColorStyle")
+            Core.<*> (o Core..:? "basicChart")
+            Core.<*> (o Core..:? "bubbleChart")
+            Core.<*> (o Core..:? "candlestickChart")
+            Core.<*> (o Core..:? "dataSourceChartProperties")
+            Core.<*> (o Core..:? "filterSpecs")
+            Core.<*> (o Core..:? "fontName")
+            Core.<*> (o Core..:? "hiddenDimensionStrategy")
+            Core.<*> (o Core..:? "histogramChart")
+            Core.<*> (o Core..:? "maximized")
+            Core.<*> (o Core..:? "orgChart")
+            Core.<*> (o Core..:? "pieChart")
+            Core.<*> (o Core..:? "scorecardChart")
+            Core.<*> (o Core..:? "sortSpecs")
+            Core.<*> (o Core..:? "subtitle")
+            Core.<*> (o Core..:? "subtitleTextFormat")
+            Core.<*> (o Core..:? "subtitleTextPosition")
+            Core.<*> (o Core..:? "title")
+            Core.<*> (o Core..:? "titleTextFormat")
+            Core.<*> (o Core..:? "titleTextPosition")
+            Core.<*> (o Core..:? "treemapChart")
+            Core.<*> (o Core..:? "waterfallChart")
+      )
+
+instance Core.ToJSON ChartSpec where
+  toJSON ChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("altText" Core..=) Core.<$> altText,
+            ("backgroundColor" Core..=) Core.<$> backgroundColor,
+            ("backgroundColorStyle" Core..=) Core.<$> backgroundColorStyle,
+            ("basicChart" Core..=) Core.<$> basicChart,
+            ("bubbleChart" Core..=) Core.<$> bubbleChart,
+            ("candlestickChart" Core..=) Core.<$> candlestickChart,
+            ("dataSourceChartProperties" Core..=)
+              Core.<$> dataSourceChartProperties,
+            ("filterSpecs" Core..=) Core.<$> filterSpecs,
+            ("fontName" Core..=) Core.<$> fontName,
+            ("hiddenDimensionStrategy" Core..=)
+              Core.<$> hiddenDimensionStrategy,
+            ("histogramChart" Core..=) Core.<$> histogramChart,
+            ("maximized" Core..=) Core.<$> maximized,
+            ("orgChart" Core..=) Core.<$> orgChart,
+            ("pieChart" Core..=) Core.<$> pieChart,
+            ("scorecardChart" Core..=) Core.<$> scorecardChart,
+            ("sortSpecs" Core..=) Core.<$> sortSpecs,
+            ("subtitle" Core..=) Core.<$> subtitle,
+            ("subtitleTextFormat" Core..=) Core.<$> subtitleTextFormat,
+            ("subtitleTextPosition" Core..=) Core.<$> subtitleTextPosition,
+            ("title" Core..=) Core.<$> title,
+            ("titleTextFormat" Core..=) Core.<$> titleTextFormat,
+            ("titleTextPosition" Core..=) Core.<$> titleTextPosition,
+            ("treemapChart" Core..=) Core.<$> treemapChart,
+            ("waterfallChart" Core..=) Core.<$> waterfallChart
+          ]
+      )
+
+-- | Clears the basic filter, if any exists on the sheet.
+--
+-- /See:/ 'newClearBasicFilterRequest' smart constructor.
+newtype ClearBasicFilterRequest = ClearBasicFilterRequest
+  { -- | The sheet ID on which the basic filter should be cleared.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ClearBasicFilterRequest' with the minimum fields required to make a request.
+newClearBasicFilterRequest ::
+  ClearBasicFilterRequest
+newClearBasicFilterRequest =
+  ClearBasicFilterRequest {sheetId = Core.Nothing}
+
+instance Core.FromJSON ClearBasicFilterRequest where
+  parseJSON =
+    Core.withObject
+      "ClearBasicFilterRequest"
+      (\o -> ClearBasicFilterRequest Core.<$> (o Core..:? "sheetId"))
+
+instance Core.ToJSON ClearBasicFilterRequest where
+  toJSON ClearBasicFilterRequest {..} =
+    Core.object
+      (Core.catMaybes [("sheetId" Core..=) Core.<$> sheetId])
+
+-- | The request for clearing a range of values in a spreadsheet.
+--
+-- /See:/ 'newClearValuesRequest' smart constructor.
+data ClearValuesRequest = ClearValuesRequest
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ClearValuesRequest' with the minimum fields required to make a request.
+newClearValuesRequest ::
+  ClearValuesRequest
+newClearValuesRequest = ClearValuesRequest
+
+instance Core.FromJSON ClearValuesRequest where
+  parseJSON =
+    Core.withObject
+      "ClearValuesRequest"
+      (\o -> Core.pure ClearValuesRequest)
+
+instance Core.ToJSON ClearValuesRequest where
+  toJSON = Core.const Core.emptyObject
+
+-- | The response when clearing a range of values in a spreadsheet.
+--
+-- /See:/ 'newClearValuesResponse' smart constructor.
+data ClearValuesResponse = ClearValuesResponse
+  { -- | 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.)
+    clearedRange :: (Core.Maybe Core.Text),
+    -- | The spreadsheet the updates were applied to.
+    spreadsheetId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ClearValuesResponse' with the minimum fields required to make a request.
+newClearValuesResponse ::
+  ClearValuesResponse
+newClearValuesResponse =
+  ClearValuesResponse
+    { clearedRange = Core.Nothing,
+      spreadsheetId = Core.Nothing
+    }
+
+instance Core.FromJSON ClearValuesResponse where
+  parseJSON =
+    Core.withObject
+      "ClearValuesResponse"
+      ( \o ->
+          ClearValuesResponse
+            Core.<$> (o Core..:? "clearedRange")
+            Core.<*> (o Core..:? "spreadsheetId")
+      )
+
+instance Core.ToJSON ClearValuesResponse where
+  toJSON ClearValuesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("clearedRange" Core..=) Core.<$> clearedRange,
+            ("spreadsheetId" Core..=) Core.<$> spreadsheetId
+          ]
+      )
+
+-- | Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and 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. This reference page doesn\'t have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most @1e-5@. 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:/ 'newColor' smart constructor.
+data Color = Color
+  { -- | 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 rendered as a solid color (as if the alpha value had been explicitly given a value of 1.0).
+    alpha :: (Core.Maybe Core.Double),
+    -- | The amount of blue in the color as a value in the interval [0, 1].
+    blue :: (Core.Maybe Core.Double),
+    -- | The amount of green in the color as a value in the interval [0, 1].
+    green :: (Core.Maybe Core.Double),
+    -- | The amount of red in the color as a value in the interval [0, 1].
+    red :: (Core.Maybe Core.Double)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Color' with the minimum fields required to make a request.
+newColor ::
+  Color
+newColor =
+  Color
+    { alpha = Core.Nothing,
+      blue = Core.Nothing,
+      green = Core.Nothing,
+      red = Core.Nothing
+    }
+
+instance Core.FromJSON Color where
+  parseJSON =
+    Core.withObject
+      "Color"
+      ( \o ->
+          Color
+            Core.<$> (o Core..:? "alpha")
+            Core.<*> (o Core..:? "blue")
+            Core.<*> (o Core..:? "green")
+            Core.<*> (o Core..:? "red")
+      )
+
+instance Core.ToJSON Color where
+  toJSON Color {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("alpha" Core..=) Core.<$> alpha,
+            ("blue" Core..=) Core.<$> blue,
+            ("green" Core..=) Core.<$> green,
+            ("red" Core..=) Core.<$> red
+          ]
+      )
+
+-- | A color value.
+--
+-- /See:/ 'newColorStyle' smart constructor.
+data ColorStyle = ColorStyle
+  { -- | RGB color. The </sheets/api/reference/rest/v4/spreadsheets/other#Color.FIELDS.alpha alpha> value in the </sheets/api/reference/rest/v4/spreadsheets/other#color Color> object isn\'t generally supported.
+    rgbColor :: (Core.Maybe Color),
+    -- | Theme color.
+    themeColor :: (Core.Maybe ColorStyle_ThemeColor)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ColorStyle' with the minimum fields required to make a request.
+newColorStyle ::
+  ColorStyle
+newColorStyle =
+  ColorStyle {rgbColor = Core.Nothing, themeColor = Core.Nothing}
+
+instance Core.FromJSON ColorStyle where
+  parseJSON =
+    Core.withObject
+      "ColorStyle"
+      ( \o ->
+          ColorStyle
+            Core.<$> (o Core..:? "rgbColor")
+            Core.<*> (o Core..:? "themeColor")
+      )
+
+instance Core.ToJSON ColorStyle where
+  toJSON ColorStyle {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("rgbColor" Core..=) Core.<$> rgbColor,
+            ("themeColor" Core..=) Core.<$> themeColor
+          ]
+      )
+
+-- | The value of the condition.
+--
+-- /See:/ 'newConditionValue' smart constructor.
+data ConditionValue = ConditionValue
+  { -- | 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.
+    relativeDate :: (Core.Maybe ConditionValue_RelativeDate),
+    -- | 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 \'+\').
+    userEnteredValue :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ConditionValue' with the minimum fields required to make a request.
+newConditionValue ::
+  ConditionValue
+newConditionValue =
+  ConditionValue
+    { relativeDate = Core.Nothing,
+      userEnteredValue = Core.Nothing
+    }
+
+instance Core.FromJSON ConditionValue where
+  parseJSON =
+    Core.withObject
+      "ConditionValue"
+      ( \o ->
+          ConditionValue
+            Core.<$> (o Core..:? "relativeDate")
+            Core.<*> (o Core..:? "userEnteredValue")
+      )
+
+instance Core.ToJSON ConditionValue where
+  toJSON ConditionValue {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("relativeDate" Core..=) Core.<$> relativeDate,
+            ("userEnteredValue" Core..=) Core.<$> userEnteredValue
+          ]
+      )
+
+-- | A rule describing a conditional format.
+--
+-- /See:/ 'newConditionalFormatRule' smart constructor.
+data ConditionalFormatRule = ConditionalFormatRule
+  { -- | The formatting is either \"on\" or \"off\" according to the rule.
+    booleanRule :: (Core.Maybe BooleanRule),
+    -- | The formatting will vary based on the gradients in the rule.
+    gradientRule :: (Core.Maybe GradientRule),
+    -- | The ranges that are formatted if the condition is true. All the ranges must be on the same grid.
+    ranges :: (Core.Maybe [GridRange])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ConditionalFormatRule' with the minimum fields required to make a request.
+newConditionalFormatRule ::
+  ConditionalFormatRule
+newConditionalFormatRule =
+  ConditionalFormatRule
+    { booleanRule = Core.Nothing,
+      gradientRule = Core.Nothing,
+      ranges = Core.Nothing
+    }
+
+instance Core.FromJSON ConditionalFormatRule where
+  parseJSON =
+    Core.withObject
+      "ConditionalFormatRule"
+      ( \o ->
+          ConditionalFormatRule
+            Core.<$> (o Core..:? "booleanRule")
+            Core.<*> (o Core..:? "gradientRule")
+            Core.<*> (o Core..:? "ranges")
+      )
+
+instance Core.ToJSON ConditionalFormatRule where
+  toJSON ConditionalFormatRule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("booleanRule" Core..=) Core.<$> booleanRule,
+            ("gradientRule" Core..=) Core.<$> gradientRule,
+            ("ranges" Core..=) Core.<$> ranges
+          ]
+      )
+
+-- | Copies data from the source to the destination.
+--
+-- /See:/ 'newCopyPasteRequest' smart constructor.
+data CopyPasteRequest = CopyPasteRequest
+  { -- | 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).
+    destination :: (Core.Maybe GridRange),
+    -- | How that data should be oriented when pasting.
+    pasteOrientation :: (Core.Maybe CopyPasteRequest_PasteOrientation),
+    -- | What kind of data to paste.
+    pasteType :: (Core.Maybe CopyPasteRequest_PasteType),
+    -- | The source range to copy.
+    source :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CopyPasteRequest' with the minimum fields required to make a request.
+newCopyPasteRequest ::
+  CopyPasteRequest
+newCopyPasteRequest =
+  CopyPasteRequest
+    { destination = Core.Nothing,
+      pasteOrientation = Core.Nothing,
+      pasteType = Core.Nothing,
+      source = Core.Nothing
+    }
+
+instance Core.FromJSON CopyPasteRequest where
+  parseJSON =
+    Core.withObject
+      "CopyPasteRequest"
+      ( \o ->
+          CopyPasteRequest
+            Core.<$> (o Core..:? "destination")
+            Core.<*> (o Core..:? "pasteOrientation")
+            Core.<*> (o Core..:? "pasteType")
+            Core.<*> (o Core..:? "source")
+      )
+
+instance Core.ToJSON CopyPasteRequest where
+  toJSON CopyPasteRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("destination" Core..=) Core.<$> destination,
+            ("pasteOrientation" Core..=) Core.<$> pasteOrientation,
+            ("pasteType" Core..=) Core.<$> pasteType,
+            ("source" Core..=) Core.<$> source
+          ]
+      )
+
+-- | The request to copy a sheet across spreadsheets.
+--
+-- /See:/ 'newCopySheetToAnotherSpreadsheetRequest' smart constructor.
+newtype CopySheetToAnotherSpreadsheetRequest = CopySheetToAnotherSpreadsheetRequest
+  { -- | The ID of the spreadsheet to copy the sheet to.
+    destinationSpreadsheetId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CopySheetToAnotherSpreadsheetRequest' with the minimum fields required to make a request.
+newCopySheetToAnotherSpreadsheetRequest ::
+  CopySheetToAnotherSpreadsheetRequest
+newCopySheetToAnotherSpreadsheetRequest =
+  CopySheetToAnotherSpreadsheetRequest
+    { destinationSpreadsheetId =
+        Core.Nothing
+    }
+
+instance Core.FromJSON CopySheetToAnotherSpreadsheetRequest where
+  parseJSON =
+    Core.withObject
+      "CopySheetToAnotherSpreadsheetRequest"
+      ( \o ->
+          CopySheetToAnotherSpreadsheetRequest
+            Core.<$> (o Core..:? "destinationSpreadsheetId")
+      )
+
+instance Core.ToJSON CopySheetToAnotherSpreadsheetRequest where
+  toJSON CopySheetToAnotherSpreadsheetRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("destinationSpreadsheetId" Core..=)
+              Core.<$> destinationSpreadsheetId
+          ]
+      )
+
+-- | A request to create developer metadata.
+--
+-- /See:/ 'newCreateDeveloperMetadataRequest' smart constructor.
+newtype CreateDeveloperMetadataRequest = CreateDeveloperMetadataRequest
+  { -- | The developer metadata to create.
+    developerMetadata :: (Core.Maybe DeveloperMetadata)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CreateDeveloperMetadataRequest' with the minimum fields required to make a request.
+newCreateDeveloperMetadataRequest ::
+  CreateDeveloperMetadataRequest
+newCreateDeveloperMetadataRequest =
+  CreateDeveloperMetadataRequest {developerMetadata = Core.Nothing}
+
+instance Core.FromJSON CreateDeveloperMetadataRequest where
+  parseJSON =
+    Core.withObject
+      "CreateDeveloperMetadataRequest"
+      ( \o ->
+          CreateDeveloperMetadataRequest
+            Core.<$> (o Core..:? "developerMetadata")
+      )
+
+instance Core.ToJSON CreateDeveloperMetadataRequest where
+  toJSON CreateDeveloperMetadataRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [("developerMetadata" Core..=) Core.<$> developerMetadata]
+      )
+
+-- | The response from creating developer metadata.
+--
+-- /See:/ 'newCreateDeveloperMetadataResponse' smart constructor.
+newtype CreateDeveloperMetadataResponse = CreateDeveloperMetadataResponse
+  { -- | The developer metadata that was created.
+    developerMetadata :: (Core.Maybe DeveloperMetadata)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CreateDeveloperMetadataResponse' with the minimum fields required to make a request.
+newCreateDeveloperMetadataResponse ::
+  CreateDeveloperMetadataResponse
+newCreateDeveloperMetadataResponse =
+  CreateDeveloperMetadataResponse {developerMetadata = Core.Nothing}
+
+instance Core.FromJSON CreateDeveloperMetadataResponse where
+  parseJSON =
+    Core.withObject
+      "CreateDeveloperMetadataResponse"
+      ( \o ->
+          CreateDeveloperMetadataResponse
+            Core.<$> (o Core..:? "developerMetadata")
+      )
+
+instance Core.ToJSON CreateDeveloperMetadataResponse where
+  toJSON CreateDeveloperMetadataResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("developerMetadata" Core..=) Core.<$> developerMetadata]
+      )
+
+-- | Moves data from the source to the destination.
+--
+-- /See:/ 'newCutPasteRequest' smart constructor.
+data CutPasteRequest = CutPasteRequest
+  { -- | The top-left coordinate where the data should be pasted.
+    destination :: (Core.Maybe GridCoordinate),
+    -- | What kind of data to paste. All the source data will be cut, regardless of what is pasted.
+    pasteType :: (Core.Maybe CutPasteRequest_PasteType),
+    -- | The source data to cut.
+    source :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CutPasteRequest' with the minimum fields required to make a request.
+newCutPasteRequest ::
+  CutPasteRequest
+newCutPasteRequest =
+  CutPasteRequest
+    { destination = Core.Nothing,
+      pasteType = Core.Nothing,
+      source = Core.Nothing
+    }
+
+instance Core.FromJSON CutPasteRequest where
+  parseJSON =
+    Core.withObject
+      "CutPasteRequest"
+      ( \o ->
+          CutPasteRequest
+            Core.<$> (o Core..:? "destination")
+            Core.<*> (o Core..:? "pasteType")
+            Core.<*> (o Core..:? "source")
+      )
+
+instance Core.ToJSON CutPasteRequest where
+  toJSON CutPasteRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("destination" Core..=) Core.<$> destination,
+            ("pasteType" Core..=) Core.<$> pasteType,
+            ("source" Core..=) Core.<$> source
+          ]
+      )
+
+-- | The data execution status. A data execution is created to sync a data source object with the latest data from a DataSource. It is usually scheduled to run at background, you can check its state to tell if an execution completes There are several scenarios where a data execution is triggered to run: * Adding a data source creates an associated data source sheet as well as a data execution to sync the data from the data source to the sheet. * Updating a data source creates a data execution to refresh the associated data source sheet similarly. * You can send refresh request to explicitly refresh one or multiple data source objects.
+--
+-- /See:/ 'newDataExecutionStatus' smart constructor.
+data DataExecutionStatus = DataExecutionStatus
+  { -- | The error code.
+    errorCode :: (Core.Maybe DataExecutionStatus_ErrorCode),
+    -- | The error message, which may be empty.
+    errorMessage :: (Core.Maybe Core.Text),
+    -- | Gets the time the data last successfully refreshed.
+    lastRefreshTime :: (Core.Maybe Core.DateTime),
+    -- | The state of the data execution.
+    state :: (Core.Maybe DataExecutionStatus_State)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataExecutionStatus' with the minimum fields required to make a request.
+newDataExecutionStatus ::
+  DataExecutionStatus
+newDataExecutionStatus =
+  DataExecutionStatus
+    { errorCode = Core.Nothing,
+      errorMessage = Core.Nothing,
+      lastRefreshTime = Core.Nothing,
+      state = Core.Nothing
+    }
+
+instance Core.FromJSON DataExecutionStatus where
+  parseJSON =
+    Core.withObject
+      "DataExecutionStatus"
+      ( \o ->
+          DataExecutionStatus
+            Core.<$> (o Core..:? "errorCode")
+            Core.<*> (o Core..:? "errorMessage")
+            Core.<*> (o Core..:? "lastRefreshTime")
+            Core.<*> (o Core..:? "state")
+      )
+
+instance Core.ToJSON DataExecutionStatus where
+  toJSON DataExecutionStatus {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("errorCode" Core..=) Core.<$> errorCode,
+            ("errorMessage" Core..=) Core.<$> errorMessage,
+            ("lastRefreshTime" Core..=) Core.<$> lastRefreshTime,
+            ("state" Core..=) Core.<$> state
+          ]
+      )
+
+-- | Filter that describes what data should be selected or returned from a request.
+--
+-- /See:/ 'newDataFilter' smart constructor.
+data DataFilter = DataFilter
+  { -- | Selects data that matches the specified A1 range.
+    a1Range :: (Core.Maybe Core.Text),
+    -- | Selects data associated with the developer metadata matching the criteria described by this DeveloperMetadataLookup.
+    developerMetadataLookup :: (Core.Maybe DeveloperMetadataLookup),
+    -- | Selects data that matches the range described by the GridRange.
+    gridRange :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataFilter' with the minimum fields required to make a request.
+newDataFilter ::
+  DataFilter
+newDataFilter =
+  DataFilter
+    { a1Range = Core.Nothing,
+      developerMetadataLookup = Core.Nothing,
+      gridRange = Core.Nothing
+    }
+
+instance Core.FromJSON DataFilter where
+  parseJSON =
+    Core.withObject
+      "DataFilter"
+      ( \o ->
+          DataFilter
+            Core.<$> (o Core..:? "a1Range")
+            Core.<*> (o Core..:? "developerMetadataLookup")
+            Core.<*> (o Core..:? "gridRange")
+      )
+
+instance Core.ToJSON DataFilter where
+  toJSON DataFilter {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("a1Range" Core..=) Core.<$> a1Range,
+            ("developerMetadataLookup" Core..=)
+              Core.<$> developerMetadataLookup,
+            ("gridRange" Core..=) Core.<$> gridRange
+          ]
+      )
+
+-- | A range of values whose location is specified by a DataFilter.
+--
+-- /See:/ 'newDataFilterValueRange' smart constructor.
+data DataFilterValueRange = DataFilterValueRange
+  { -- | The data filter describing the location of the values in the spreadsheet.
+    dataFilter :: (Core.Maybe DataFilter),
+    -- | The major dimension of the values.
+    majorDimension :: (Core.Maybe DataFilterValueRange_MajorDimension),
+    -- | The data to be written. If the provided values exceed any of the ranges matched by the data filter then the request fails. If the provided values are less than the matched ranges only the specified values are written, existing values in the matched ranges remain unaffected.
+    values :: (Core.Maybe [[Core.Value]])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataFilterValueRange' with the minimum fields required to make a request.
+newDataFilterValueRange ::
+  DataFilterValueRange
+newDataFilterValueRange =
+  DataFilterValueRange
+    { dataFilter = Core.Nothing,
+      majorDimension = Core.Nothing,
+      values = Core.Nothing
+    }
+
+instance Core.FromJSON DataFilterValueRange where
+  parseJSON =
+    Core.withObject
+      "DataFilterValueRange"
+      ( \o ->
+          DataFilterValueRange
+            Core.<$> (o Core..:? "dataFilter")
+            Core.<*> (o Core..:? "majorDimension")
+            Core.<*> (o Core..:? "values")
+      )
+
+instance Core.ToJSON DataFilterValueRange where
+  toJSON DataFilterValueRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataFilter" Core..=) Core.<$> dataFilter,
+            ("majorDimension" Core..=) Core.<$> majorDimension,
+            ("values" Core..=) Core.<$> values
+          ]
+      )
+
+-- | Settings for one set of data labels. Data labels are annotations that appear next to a set of data, such as the points on a line chart, and provide additional information about what the data represents, such as a text representation of the value behind that point on the graph.
+--
+-- /See:/ 'newDataLabel' smart constructor.
+data DataLabel = DataLabel
+  { -- | Data to use for custom labels. Only used if type is set to CUSTOM. This data must be the same length as the series or other element this data label is applied to. In addition, if the series is split into multiple source ranges, this source data must come from the next column in the source data. For example, if the series is B2:B4,E6:E8 then this data must come from C2:C4,F6:F8.
+    customLabelData :: (Core.Maybe ChartData),
+    -- | The placement of the data label relative to the labeled data.
+    placement :: (Core.Maybe DataLabel_Placement),
+    -- | The text format used for the data label. The link field is not supported.
+    textFormat :: (Core.Maybe TextFormat),
+    -- | The type of the data label.
+    type' :: (Core.Maybe DataLabel_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataLabel' with the minimum fields required to make a request.
+newDataLabel ::
+  DataLabel
+newDataLabel =
+  DataLabel
+    { customLabelData = Core.Nothing,
+      placement = Core.Nothing,
+      textFormat = Core.Nothing,
+      type' = Core.Nothing
+    }
+
+instance Core.FromJSON DataLabel where
+  parseJSON =
+    Core.withObject
+      "DataLabel"
+      ( \o ->
+          DataLabel
+            Core.<$> (o Core..:? "customLabelData")
+            Core.<*> (o Core..:? "placement")
+            Core.<*> (o Core..:? "textFormat")
+            Core.<*> (o Core..:? "type")
+      )
+
+instance Core.ToJSON DataLabel where
+  toJSON DataLabel {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("customLabelData" Core..=) Core.<$> customLabelData,
+            ("placement" Core..=) Core.<$> placement,
+            ("textFormat" Core..=) Core.<$> textFormat,
+            ("type" Core..=) Core.<$> type'
+          ]
+      )
+
+-- | Information about an external data source in the spreadsheet.
+--
+-- /See:/ 'newDataSource' smart constructor.
+data DataSource = DataSource
+  { -- | All calculated columns in the data source.
+    calculatedColumns :: (Core.Maybe [DataSourceColumn]),
+    -- | The spreadsheet-scoped unique ID that identifies the data source. Example: 1080547365.
+    dataSourceId :: (Core.Maybe Core.Text),
+    -- | The ID of the Sheet connected with the data source. The field cannot be changed once set. When creating a data source, an associated DATA_SOURCE sheet is also created, if the field is not specified, the ID of the created sheet will be randomly generated.
+    sheetId :: (Core.Maybe Core.Int32),
+    -- | The DataSourceSpec for the data source connected with this spreadsheet.
+    spec :: (Core.Maybe DataSourceSpec)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSource' with the minimum fields required to make a request.
+newDataSource ::
+  DataSource
+newDataSource =
+  DataSource
+    { calculatedColumns = Core.Nothing,
+      dataSourceId = Core.Nothing,
+      sheetId = Core.Nothing,
+      spec = Core.Nothing
+    }
+
+instance Core.FromJSON DataSource where
+  parseJSON =
+    Core.withObject
+      "DataSource"
+      ( \o ->
+          DataSource
+            Core.<$> (o Core..:? "calculatedColumns")
+            Core.<*> (o Core..:? "dataSourceId")
+            Core.<*> (o Core..:? "sheetId")
+            Core.<*> (o Core..:? "spec")
+      )
+
+instance Core.ToJSON DataSource where
+  toJSON DataSource {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("calculatedColumns" Core..=) Core.<$> calculatedColumns,
+            ("dataSourceId" Core..=) Core.<$> dataSourceId,
+            ("sheetId" Core..=) Core.<$> sheetId,
+            ("spec" Core..=) Core.<$> spec
+          ]
+      )
+
+-- | Properties of a data source chart.
+--
+-- /See:/ 'newDataSourceChartProperties' smart constructor.
+data DataSourceChartProperties = DataSourceChartProperties
+  { -- | Output only. The data execution status.
+    dataExecutionStatus :: (Core.Maybe DataExecutionStatus),
+    -- | ID of the data source that the chart is associated with.
+    dataSourceId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceChartProperties' with the minimum fields required to make a request.
+newDataSourceChartProperties ::
+  DataSourceChartProperties
+newDataSourceChartProperties =
+  DataSourceChartProperties
+    { dataExecutionStatus = Core.Nothing,
+      dataSourceId = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceChartProperties where
+  parseJSON =
+    Core.withObject
+      "DataSourceChartProperties"
+      ( \o ->
+          DataSourceChartProperties
+            Core.<$> (o Core..:? "dataExecutionStatus")
+            Core.<*> (o Core..:? "dataSourceId")
+      )
+
+instance Core.ToJSON DataSourceChartProperties where
+  toJSON DataSourceChartProperties {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataExecutionStatus" Core..=) Core.<$> dataExecutionStatus,
+            ("dataSourceId" Core..=) Core.<$> dataSourceId
+          ]
+      )
+
+-- | A column in a data source.
+--
+-- /See:/ 'newDataSourceColumn' smart constructor.
+data DataSourceColumn = DataSourceColumn
+  { -- | The formula of the calculated column.
+    formula :: (Core.Maybe Core.Text),
+    -- | The column reference.
+    reference :: (Core.Maybe DataSourceColumnReference)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceColumn' with the minimum fields required to make a request.
+newDataSourceColumn ::
+  DataSourceColumn
+newDataSourceColumn =
+  DataSourceColumn
+    { formula = Core.Nothing,
+      reference = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceColumn where
+  parseJSON =
+    Core.withObject
+      "DataSourceColumn"
+      ( \o ->
+          DataSourceColumn
+            Core.<$> (o Core..:? "formula")
+            Core.<*> (o Core..:? "reference")
+      )
+
+instance Core.ToJSON DataSourceColumn where
+  toJSON DataSourceColumn {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("formula" Core..=) Core.<$> formula,
+            ("reference" Core..=) Core.<$> reference
+          ]
+      )
+
+-- | An unique identifier that references a data source column.
+--
+-- /See:/ 'newDataSourceColumnReference' smart constructor.
+newtype DataSourceColumnReference = DataSourceColumnReference
+  { -- | The display name of the column. It should be unique within a data source.
+    name :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceColumnReference' with the minimum fields required to make a request.
+newDataSourceColumnReference ::
+  DataSourceColumnReference
+newDataSourceColumnReference =
+  DataSourceColumnReference {name = Core.Nothing}
+
+instance Core.FromJSON DataSourceColumnReference where
+  parseJSON =
+    Core.withObject
+      "DataSourceColumnReference"
+      (\o -> DataSourceColumnReference Core.<$> (o Core..:? "name"))
+
+instance Core.ToJSON DataSourceColumnReference where
+  toJSON DataSourceColumnReference {..} =
+    Core.object (Core.catMaybes [("name" Core..=) Core.<$> name])
+
+-- | A data source formula.
+--
+-- /See:/ 'newDataSourceFormula' smart constructor.
+data DataSourceFormula = DataSourceFormula
+  { -- | Output only. The data execution status.
+    dataExecutionStatus :: (Core.Maybe DataExecutionStatus),
+    -- | The ID of the data source the formula is associated with.
+    dataSourceId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceFormula' with the minimum fields required to make a request.
+newDataSourceFormula ::
+  DataSourceFormula
+newDataSourceFormula =
+  DataSourceFormula
+    { dataExecutionStatus = Core.Nothing,
+      dataSourceId = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceFormula where
+  parseJSON =
+    Core.withObject
+      "DataSourceFormula"
+      ( \o ->
+          DataSourceFormula
+            Core.<$> (o Core..:? "dataExecutionStatus")
+            Core.<*> (o Core..:? "dataSourceId")
+      )
+
+instance Core.ToJSON DataSourceFormula where
+  toJSON DataSourceFormula {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataExecutionStatus" Core..=) Core.<$> dataExecutionStatus,
+            ("dataSourceId" Core..=) Core.<$> dataSourceId
+          ]
+      )
+
+-- | Reference to a data source object.
+--
+-- /See:/ 'newDataSourceObjectReference' smart constructor.
+data DataSourceObjectReference = DataSourceObjectReference
+  { -- | References to a data source chart.
+    chartId :: (Core.Maybe Core.Int32),
+    -- | References to a cell containing DataSourceFormula.
+    dataSourceFormulaCell :: (Core.Maybe GridCoordinate),
+    -- | References to a data source PivotTable anchored at the cell.
+    dataSourcePivotTableAnchorCell :: (Core.Maybe GridCoordinate),
+    -- | References to a DataSourceTable anchored at the cell.
+    dataSourceTableAnchorCell :: (Core.Maybe GridCoordinate),
+    -- | References to a DATA_SOURCE sheet.
+    sheetId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceObjectReference' with the minimum fields required to make a request.
+newDataSourceObjectReference ::
+  DataSourceObjectReference
+newDataSourceObjectReference =
+  DataSourceObjectReference
+    { chartId = Core.Nothing,
+      dataSourceFormulaCell = Core.Nothing,
+      dataSourcePivotTableAnchorCell = Core.Nothing,
+      dataSourceTableAnchorCell = Core.Nothing,
+      sheetId = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceObjectReference where
+  parseJSON =
+    Core.withObject
+      "DataSourceObjectReference"
+      ( \o ->
+          DataSourceObjectReference
+            Core.<$> (o Core..:? "chartId")
+            Core.<*> (o Core..:? "dataSourceFormulaCell")
+            Core.<*> (o Core..:? "dataSourcePivotTableAnchorCell")
+            Core.<*> (o Core..:? "dataSourceTableAnchorCell")
+            Core.<*> (o Core..:? "sheetId")
+      )
+
+instance Core.ToJSON DataSourceObjectReference where
+  toJSON DataSourceObjectReference {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("chartId" Core..=) Core.<$> chartId,
+            ("dataSourceFormulaCell" Core..=) Core.<$> dataSourceFormulaCell,
+            ("dataSourcePivotTableAnchorCell" Core..=)
+              Core.<$> dataSourcePivotTableAnchorCell,
+            ("dataSourceTableAnchorCell" Core..=)
+              Core.<$> dataSourceTableAnchorCell,
+            ("sheetId" Core..=) Core.<$> sheetId
+          ]
+      )
+
+-- | A list of references to data source objects.
+--
+-- /See:/ 'newDataSourceObjectReferences' smart constructor.
+newtype DataSourceObjectReferences = DataSourceObjectReferences
+  { -- | The references.
+    references :: (Core.Maybe [DataSourceObjectReference])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceObjectReferences' with the minimum fields required to make a request.
+newDataSourceObjectReferences ::
+  DataSourceObjectReferences
+newDataSourceObjectReferences =
+  DataSourceObjectReferences {references = Core.Nothing}
+
+instance Core.FromJSON DataSourceObjectReferences where
+  parseJSON =
+    Core.withObject
+      "DataSourceObjectReferences"
+      ( \o ->
+          DataSourceObjectReferences Core.<$> (o Core..:? "references")
+      )
+
+instance Core.ToJSON DataSourceObjectReferences where
+  toJSON DataSourceObjectReferences {..} =
+    Core.object
+      (Core.catMaybes [("references" Core..=) Core.<$> references])
+
+-- | A parameter in a data source\'s query. The parameter allows the user to pass in values from the spreadsheet into a query.
+--
+-- /See:/ 'newDataSourceParameter' smart constructor.
+data DataSourceParameter = DataSourceParameter
+  { -- | Named parameter. Must be a legitimate identifier for the DataSource that supports it. For example, <https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#identifiers BigQuery identifier>.
+    name :: (Core.Maybe Core.Text),
+    -- | ID of a NamedRange. Its size must be 1x1.
+    namedRangeId :: (Core.Maybe Core.Text),
+    -- | A range that contains the value of the parameter. Its size must be 1x1.
+    range :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceParameter' with the minimum fields required to make a request.
+newDataSourceParameter ::
+  DataSourceParameter
+newDataSourceParameter =
+  DataSourceParameter
+    { name = Core.Nothing,
+      namedRangeId = Core.Nothing,
+      range = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceParameter where
+  parseJSON =
+    Core.withObject
+      "DataSourceParameter"
+      ( \o ->
+          DataSourceParameter
+            Core.<$> (o Core..:? "name")
+            Core.<*> (o Core..:? "namedRangeId")
+            Core.<*> (o Core..:? "range")
+      )
+
+instance Core.ToJSON DataSourceParameter where
+  toJSON DataSourceParameter {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("name" Core..=) Core.<$> name,
+            ("namedRangeId" Core..=) Core.<$> namedRangeId,
+            ("range" Core..=) Core.<$> range
+          ]
+      )
+
+-- | A schedule for data to refresh every day in a given time interval.
+--
+-- /See:/ 'newDataSourceRefreshDailySchedule' smart constructor.
+newtype DataSourceRefreshDailySchedule = DataSourceRefreshDailySchedule
+  { -- | The start time of a time interval in which a data source refresh is scheduled. Only @hours@ part is used. The time interval size defaults to that in the Sheets editor.
+    startTime :: (Core.Maybe TimeOfDay')
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceRefreshDailySchedule' with the minimum fields required to make a request.
+newDataSourceRefreshDailySchedule ::
+  DataSourceRefreshDailySchedule
+newDataSourceRefreshDailySchedule =
+  DataSourceRefreshDailySchedule {startTime = Core.Nothing}
+
+instance Core.FromJSON DataSourceRefreshDailySchedule where
+  parseJSON =
+    Core.withObject
+      "DataSourceRefreshDailySchedule"
+      ( \o ->
+          DataSourceRefreshDailySchedule Core.<$> (o Core..:? "startTime")
+      )
+
+instance Core.ToJSON DataSourceRefreshDailySchedule where
+  toJSON DataSourceRefreshDailySchedule {..} =
+    Core.object
+      (Core.catMaybes [("startTime" Core..=) Core.<$> startTime])
+
+-- | A monthly schedule for data to refresh on specific days in the month in a given time interval.
+--
+-- /See:/ 'newDataSourceRefreshMonthlySchedule' smart constructor.
+data DataSourceRefreshMonthlySchedule = DataSourceRefreshMonthlySchedule
+  { -- | Days of the month to refresh. Only 1-28 are supported, mapping to the 1st to the 28th day. At least one day must be specified.
+    daysOfMonth :: (Core.Maybe [Core.Int32]),
+    -- | The start time of a time interval in which a data source refresh is scheduled. Only @hours@ part is used. The time interval size defaults to that in the Sheets editor.
+    startTime :: (Core.Maybe TimeOfDay')
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceRefreshMonthlySchedule' with the minimum fields required to make a request.
+newDataSourceRefreshMonthlySchedule ::
+  DataSourceRefreshMonthlySchedule
+newDataSourceRefreshMonthlySchedule =
+  DataSourceRefreshMonthlySchedule
+    { daysOfMonth = Core.Nothing,
+      startTime = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceRefreshMonthlySchedule where
+  parseJSON =
+    Core.withObject
+      "DataSourceRefreshMonthlySchedule"
+      ( \o ->
+          DataSourceRefreshMonthlySchedule
+            Core.<$> (o Core..:? "daysOfMonth")
+            Core.<*> (o Core..:? "startTime")
+      )
+
+instance Core.ToJSON DataSourceRefreshMonthlySchedule where
+  toJSON DataSourceRefreshMonthlySchedule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("daysOfMonth" Core..=) Core.<$> daysOfMonth,
+            ("startTime" Core..=) Core.<$> startTime
+          ]
+      )
+
+-- | Schedule for refreshing the data source. Data sources in the spreadsheet are refreshed within a time interval. You can specify the start time by clicking the Scheduled Refresh button in the Sheets editor, but the interval is fixed at 4 hours. For example, if you specify a start time of 8 AM , the refresh will take place between 8 AM and 12 PM every day.
+--
+-- /See:/ 'newDataSourceRefreshSchedule' smart constructor.
+data DataSourceRefreshSchedule = DataSourceRefreshSchedule
+  { -- | Daily refresh schedule.
+    dailySchedule :: (Core.Maybe DataSourceRefreshDailySchedule),
+    -- | True if the refresh schedule is enabled, or false otherwise.
+    enabled :: (Core.Maybe Core.Bool),
+    -- | Monthly refresh schedule.
+    monthlySchedule :: (Core.Maybe DataSourceRefreshMonthlySchedule),
+    -- | Output only. The time interval of the next run.
+    nextRun :: (Core.Maybe Interval),
+    -- | The scope of the refresh. Must be ALL/DATA/SOURCES.
+    refreshScope :: (Core.Maybe DataSourceRefreshSchedule_RefreshScope),
+    -- | Weekly refresh schedule.
+    weeklySchedule :: (Core.Maybe DataSourceRefreshWeeklySchedule)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceRefreshSchedule' with the minimum fields required to make a request.
+newDataSourceRefreshSchedule ::
+  DataSourceRefreshSchedule
+newDataSourceRefreshSchedule =
+  DataSourceRefreshSchedule
+    { dailySchedule = Core.Nothing,
+      enabled = Core.Nothing,
+      monthlySchedule = Core.Nothing,
+      nextRun = Core.Nothing,
+      refreshScope = Core.Nothing,
+      weeklySchedule = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceRefreshSchedule where
+  parseJSON =
+    Core.withObject
+      "DataSourceRefreshSchedule"
+      ( \o ->
+          DataSourceRefreshSchedule
+            Core.<$> (o Core..:? "dailySchedule")
+            Core.<*> (o Core..:? "enabled")
+            Core.<*> (o Core..:? "monthlySchedule")
+            Core.<*> (o Core..:? "nextRun")
+            Core.<*> (o Core..:? "refreshScope")
+            Core.<*> (o Core..:? "weeklySchedule")
+      )
+
+instance Core.ToJSON DataSourceRefreshSchedule where
+  toJSON DataSourceRefreshSchedule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dailySchedule" Core..=) Core.<$> dailySchedule,
+            ("enabled" Core..=) Core.<$> enabled,
+            ("monthlySchedule" Core..=) Core.<$> monthlySchedule,
+            ("nextRun" Core..=) Core.<$> nextRun,
+            ("refreshScope" Core..=) Core.<$> refreshScope,
+            ("weeklySchedule" Core..=) Core.<$> weeklySchedule
+          ]
+      )
+
+-- | A weekly schedule for data to refresh on specific days in a given time interval.
+--
+-- /See:/ 'newDataSourceRefreshWeeklySchedule' smart constructor.
+data DataSourceRefreshWeeklySchedule = DataSourceRefreshWeeklySchedule
+  { -- | Days of the week to refresh. At least one day must be specified.
+    daysOfWeek :: (Core.Maybe [DataSourceRefreshWeeklySchedule_DaysOfWeekItem]),
+    -- | The start time of a time interval in which a data source refresh is scheduled. Only @hours@ part is used. The time interval size defaults to that in the Sheets editor.
+    startTime :: (Core.Maybe TimeOfDay')
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceRefreshWeeklySchedule' with the minimum fields required to make a request.
+newDataSourceRefreshWeeklySchedule ::
+  DataSourceRefreshWeeklySchedule
+newDataSourceRefreshWeeklySchedule =
+  DataSourceRefreshWeeklySchedule
+    { daysOfWeek = Core.Nothing,
+      startTime = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceRefreshWeeklySchedule where
+  parseJSON =
+    Core.withObject
+      "DataSourceRefreshWeeklySchedule"
+      ( \o ->
+          DataSourceRefreshWeeklySchedule
+            Core.<$> (o Core..:? "daysOfWeek")
+            Core.<*> (o Core..:? "startTime")
+      )
+
+instance Core.ToJSON DataSourceRefreshWeeklySchedule where
+  toJSON DataSourceRefreshWeeklySchedule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("daysOfWeek" Core..=) Core.<$> daysOfWeek,
+            ("startTime" Core..=) Core.<$> startTime
+          ]
+      )
+
+-- | A range along a single dimension on a DATA_SOURCE sheet.
+--
+-- /See:/ 'newDataSourceSheetDimensionRange' smart constructor.
+data DataSourceSheetDimensionRange = DataSourceSheetDimensionRange
+  { -- | The columns on the data source sheet.
+    columnReferences :: (Core.Maybe [DataSourceColumnReference]),
+    -- | The ID of the data source sheet the range is on.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceSheetDimensionRange' with the minimum fields required to make a request.
+newDataSourceSheetDimensionRange ::
+  DataSourceSheetDimensionRange
+newDataSourceSheetDimensionRange =
+  DataSourceSheetDimensionRange
+    { columnReferences = Core.Nothing,
+      sheetId = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceSheetDimensionRange where
+  parseJSON =
+    Core.withObject
+      "DataSourceSheetDimensionRange"
+      ( \o ->
+          DataSourceSheetDimensionRange
+            Core.<$> (o Core..:? "columnReferences")
+            Core.<*> (o Core..:? "sheetId")
+      )
+
+instance Core.ToJSON DataSourceSheetDimensionRange where
+  toJSON DataSourceSheetDimensionRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("columnReferences" Core..=) Core.<$> columnReferences,
+            ("sheetId" Core..=) Core.<$> sheetId
+          ]
+      )
+
+-- | Additional properties of a DATA_SOURCE sheet.
+--
+-- /See:/ 'newDataSourceSheetProperties' smart constructor.
+data DataSourceSheetProperties = DataSourceSheetProperties
+  { -- | The columns displayed on the sheet, corresponding to the values in RowData.
+    columns :: (Core.Maybe [DataSourceColumn]),
+    -- | The data execution status.
+    dataExecutionStatus :: (Core.Maybe DataExecutionStatus),
+    -- | ID of the DataSource the sheet is connected to.
+    dataSourceId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceSheetProperties' with the minimum fields required to make a request.
+newDataSourceSheetProperties ::
+  DataSourceSheetProperties
+newDataSourceSheetProperties =
+  DataSourceSheetProperties
+    { columns = Core.Nothing,
+      dataExecutionStatus = Core.Nothing,
+      dataSourceId = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceSheetProperties where
+  parseJSON =
+    Core.withObject
+      "DataSourceSheetProperties"
+      ( \o ->
+          DataSourceSheetProperties
+            Core.<$> (o Core..:? "columns")
+            Core.<*> (o Core..:? "dataExecutionStatus")
+            Core.<*> (o Core..:? "dataSourceId")
+      )
+
+instance Core.ToJSON DataSourceSheetProperties where
+  toJSON DataSourceSheetProperties {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("columns" Core..=) Core.<$> columns,
+            ("dataExecutionStatus" Core..=) Core.<$> dataExecutionStatus,
+            ("dataSourceId" Core..=) Core.<$> dataSourceId
+          ]
+      )
+
+-- | This specifies the details of the data source. For example, for BigQuery, this specifies information about the BigQuery source.
+--
+-- /See:/ 'newDataSourceSpec' smart constructor.
+data DataSourceSpec = DataSourceSpec
+  { -- | A BigQueryDataSourceSpec.
+    bigQuery :: (Core.Maybe BigQueryDataSourceSpec),
+    -- | A LookerDatasourceSpec.
+    looker :: (Core.Maybe LookerDataSourceSpec),
+    -- | The parameters of the data source, used when querying the data source.
+    parameters :: (Core.Maybe [DataSourceParameter])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceSpec' with the minimum fields required to make a request.
+newDataSourceSpec ::
+  DataSourceSpec
+newDataSourceSpec =
+  DataSourceSpec
+    { bigQuery = Core.Nothing,
+      looker = Core.Nothing,
+      parameters = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceSpec where
+  parseJSON =
+    Core.withObject
+      "DataSourceSpec"
+      ( \o ->
+          DataSourceSpec
+            Core.<$> (o Core..:? "bigQuery")
+            Core.<*> (o Core..:? "looker")
+            Core.<*> (o Core..:? "parameters")
+      )
+
+instance Core.ToJSON DataSourceSpec where
+  toJSON DataSourceSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bigQuery" Core..=) Core.<$> bigQuery,
+            ("looker" Core..=) Core.<$> looker,
+            ("parameters" Core..=) Core.<$> parameters
+          ]
+      )
+
+-- | A data source table, which allows the user to import a static table of data from the DataSource into Sheets. This is also known as \"Extract\" in the Sheets editor.
+--
+-- /See:/ 'newDataSourceTable' smart constructor.
+data DataSourceTable = DataSourceTable
+  { -- | The type to select columns for the data source table. Defaults to SELECTED.
+    columnSelectionType :: (Core.Maybe DataSourceTable_ColumnSelectionType),
+    -- | Columns selected for the data source table. The column/selection/type must be SELECTED.
+    columns :: (Core.Maybe [DataSourceColumnReference]),
+    -- | Output only. The data execution status.
+    dataExecutionStatus :: (Core.Maybe DataExecutionStatus),
+    -- | The ID of the data source the data source table is associated with.
+    dataSourceId :: (Core.Maybe Core.Text),
+    -- | Filter specifications in the data source table.
+    filterSpecs :: (Core.Maybe [FilterSpec]),
+    -- | The limit of rows to return. If not set, a default limit is applied. Please refer to the Sheets editor for the default and max limit.
+    rowLimit :: (Core.Maybe Core.Int32),
+    -- | Sort specifications in the data source table. The result of the data source table is sorted based on the sort specifications in order.
+    sortSpecs :: (Core.Maybe [SortSpec])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSourceTable' with the minimum fields required to make a request.
+newDataSourceTable ::
+  DataSourceTable
+newDataSourceTable =
+  DataSourceTable
+    { columnSelectionType = Core.Nothing,
+      columns = Core.Nothing,
+      dataExecutionStatus = Core.Nothing,
+      dataSourceId = Core.Nothing,
+      filterSpecs = Core.Nothing,
+      rowLimit = Core.Nothing,
+      sortSpecs = Core.Nothing
+    }
+
+instance Core.FromJSON DataSourceTable where
+  parseJSON =
+    Core.withObject
+      "DataSourceTable"
+      ( \o ->
+          DataSourceTable
+            Core.<$> (o Core..:? "columnSelectionType")
+            Core.<*> (o Core..:? "columns")
+            Core.<*> (o Core..:? "dataExecutionStatus")
+            Core.<*> (o Core..:? "dataSourceId")
+            Core.<*> (o Core..:? "filterSpecs")
+            Core.<*> (o Core..:? "rowLimit")
+            Core.<*> (o Core..:? "sortSpecs")
+      )
+
+instance Core.ToJSON DataSourceTable where
+  toJSON DataSourceTable {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("columnSelectionType" Core..=) Core.<$> columnSelectionType,
+            ("columns" Core..=) Core.<$> columns,
+            ("dataExecutionStatus" Core..=) Core.<$> dataExecutionStatus,
+            ("dataSourceId" Core..=) Core.<$> dataSourceId,
+            ("filterSpecs" Core..=) Core.<$> filterSpecs,
+            ("rowLimit" Core..=) Core.<$> rowLimit,
+            ("sortSpecs" Core..=) Core.<$> sortSpecs
+          ]
+      )
+
+-- | A data validation rule.
+--
+-- /See:/ 'newDataValidationRule' smart constructor.
+data DataValidationRule = DataValidationRule
+  { -- | The condition that data in the cell must match.
+    condition :: (Core.Maybe BooleanCondition),
+    -- | A message to show the user when adding data to the cell.
+    inputMessage :: (Core.Maybe Core.Text),
+    -- | True if the UI should be customized based on the kind of condition. If true, \"List\" conditions will show a dropdown.
+    showCustomUi :: (Core.Maybe Core.Bool),
+    -- | True if invalid data should be rejected.
+    strict :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataValidationRule' with the minimum fields required to make a request.
+newDataValidationRule ::
+  DataValidationRule
+newDataValidationRule =
+  DataValidationRule
+    { condition = Core.Nothing,
+      inputMessage = Core.Nothing,
+      showCustomUi = Core.Nothing,
+      strict = Core.Nothing
+    }
+
+instance Core.FromJSON DataValidationRule where
+  parseJSON =
+    Core.withObject
+      "DataValidationRule"
+      ( \o ->
+          DataValidationRule
+            Core.<$> (o Core..:? "condition")
+            Core.<*> (o Core..:? "inputMessage")
+            Core.<*> (o Core..:? "showCustomUi")
+            Core.<*> (o Core..:? "strict")
+      )
+
+instance Core.ToJSON DataValidationRule where
+  toJSON DataValidationRule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("condition" Core..=) Core.<$> condition,
+            ("inputMessage" Core..=) Core.<$> inputMessage,
+            ("showCustomUi" Core..=) Core.<$> showCustomUi,
+            ("strict" Core..=) Core.<$> strict
+          ]
+      )
+
+-- | 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:/ 'newDateTimeRule' smart constructor.
+newtype DateTimeRule = DateTimeRule
+  { -- | The type of date-time grouping to apply.
+    type' :: (Core.Maybe DateTimeRule_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DateTimeRule' with the minimum fields required to make a request.
+newDateTimeRule ::
+  DateTimeRule
+newDateTimeRule = DateTimeRule {type' = Core.Nothing}
+
+instance Core.FromJSON DateTimeRule where
+  parseJSON =
+    Core.withObject
+      "DateTimeRule"
+      (\o -> DateTimeRule Core.<$> (o Core..:? "type"))
+
+instance Core.ToJSON DateTimeRule where
+  toJSON DateTimeRule {..} =
+    Core.object (Core.catMaybes [("type" Core..=) Core.<$> type'])
+
+-- | Removes the banded range with the given ID from the spreadsheet.
+--
+-- /See:/ 'newDeleteBandingRequest' smart constructor.
+newtype DeleteBandingRequest = DeleteBandingRequest
+  { -- | The ID of the banded range to delete.
+    bandedRangeId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteBandingRequest' with the minimum fields required to make a request.
+newDeleteBandingRequest ::
+  DeleteBandingRequest
+newDeleteBandingRequest =
+  DeleteBandingRequest {bandedRangeId = Core.Nothing}
+
+instance Core.FromJSON DeleteBandingRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteBandingRequest"
+      (\o -> DeleteBandingRequest Core.<$> (o Core..:? "bandedRangeId"))
+
+instance Core.ToJSON DeleteBandingRequest where
+  toJSON DeleteBandingRequest {..} =
+    Core.object
+      (Core.catMaybes [("bandedRangeId" Core..=) Core.<$> bandedRangeId])
+
+-- | Deletes a conditional format rule at the given index. All subsequent rules\' indexes are decremented.
+--
+-- /See:/ 'newDeleteConditionalFormatRuleRequest' smart constructor.
+data DeleteConditionalFormatRuleRequest = DeleteConditionalFormatRuleRequest
+  { -- | The zero-based index of the rule to be deleted.
+    index :: (Core.Maybe Core.Int32),
+    -- | The sheet the rule is being deleted from.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteConditionalFormatRuleRequest' with the minimum fields required to make a request.
+newDeleteConditionalFormatRuleRequest ::
+  DeleteConditionalFormatRuleRequest
+newDeleteConditionalFormatRuleRequest =
+  DeleteConditionalFormatRuleRequest
+    { index = Core.Nothing,
+      sheetId = Core.Nothing
+    }
+
+instance Core.FromJSON DeleteConditionalFormatRuleRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteConditionalFormatRuleRequest"
+      ( \o ->
+          DeleteConditionalFormatRuleRequest
+            Core.<$> (o Core..:? "index")
+            Core.<*> (o Core..:? "sheetId")
+      )
+
+instance Core.ToJSON DeleteConditionalFormatRuleRequest where
+  toJSON DeleteConditionalFormatRuleRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("index" Core..=) Core.<$> index,
+            ("sheetId" Core..=) Core.<$> sheetId
+          ]
+      )
+
+-- | The result of deleting a conditional format rule.
+--
+-- /See:/ 'newDeleteConditionalFormatRuleResponse' smart constructor.
+newtype DeleteConditionalFormatRuleResponse = DeleteConditionalFormatRuleResponse
+  { -- | The rule that was deleted.
+    rule :: (Core.Maybe ConditionalFormatRule)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteConditionalFormatRuleResponse' with the minimum fields required to make a request.
+newDeleteConditionalFormatRuleResponse ::
+  DeleteConditionalFormatRuleResponse
+newDeleteConditionalFormatRuleResponse =
+  DeleteConditionalFormatRuleResponse {rule = Core.Nothing}
+
+instance Core.FromJSON DeleteConditionalFormatRuleResponse where
+  parseJSON =
+    Core.withObject
+      "DeleteConditionalFormatRuleResponse"
+      ( \o ->
+          DeleteConditionalFormatRuleResponse Core.<$> (o Core..:? "rule")
+      )
+
+instance Core.ToJSON DeleteConditionalFormatRuleResponse where
+  toJSON DeleteConditionalFormatRuleResponse {..} =
+    Core.object (Core.catMaybes [("rule" Core..=) Core.<$> rule])
+
+-- | Deletes a data source. The request also deletes the associated data source sheet, and unlinks all associated data source objects.
+--
+-- /See:/ 'newDeleteDataSourceRequest' smart constructor.
+newtype DeleteDataSourceRequest = DeleteDataSourceRequest
+  { -- | The ID of the data source to delete.
+    dataSourceId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteDataSourceRequest' with the minimum fields required to make a request.
+newDeleteDataSourceRequest ::
+  DeleteDataSourceRequest
+newDeleteDataSourceRequest =
+  DeleteDataSourceRequest {dataSourceId = Core.Nothing}
+
+instance Core.FromJSON DeleteDataSourceRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteDataSourceRequest"
+      ( \o ->
+          DeleteDataSourceRequest Core.<$> (o Core..:? "dataSourceId")
+      )
+
+instance Core.ToJSON DeleteDataSourceRequest where
+  toJSON DeleteDataSourceRequest {..} =
+    Core.object
+      (Core.catMaybes [("dataSourceId" Core..=) Core.<$> dataSourceId])
+
+-- | A request to delete developer metadata.
+--
+-- /See:/ 'newDeleteDeveloperMetadataRequest' smart constructor.
+newtype DeleteDeveloperMetadataRequest = DeleteDeveloperMetadataRequest
+  { -- | The data filter describing the criteria used to select which developer metadata entry to delete.
+    dataFilter :: (Core.Maybe DataFilter)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteDeveloperMetadataRequest' with the minimum fields required to make a request.
+newDeleteDeveloperMetadataRequest ::
+  DeleteDeveloperMetadataRequest
+newDeleteDeveloperMetadataRequest =
+  DeleteDeveloperMetadataRequest {dataFilter = Core.Nothing}
+
+instance Core.FromJSON DeleteDeveloperMetadataRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteDeveloperMetadataRequest"
+      ( \o ->
+          DeleteDeveloperMetadataRequest Core.<$> (o Core..:? "dataFilter")
+      )
+
+instance Core.ToJSON DeleteDeveloperMetadataRequest where
+  toJSON DeleteDeveloperMetadataRequest {..} =
+    Core.object
+      (Core.catMaybes [("dataFilter" Core..=) Core.<$> dataFilter])
+
+-- | The response from deleting developer metadata.
+--
+-- /See:/ 'newDeleteDeveloperMetadataResponse' smart constructor.
+newtype DeleteDeveloperMetadataResponse = DeleteDeveloperMetadataResponse
+  { -- | The metadata that was deleted.
+    deletedDeveloperMetadata :: (Core.Maybe [DeveloperMetadata])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteDeveloperMetadataResponse' with the minimum fields required to make a request.
+newDeleteDeveloperMetadataResponse ::
+  DeleteDeveloperMetadataResponse
+newDeleteDeveloperMetadataResponse =
+  DeleteDeveloperMetadataResponse
+    { deletedDeveloperMetadata =
+        Core.Nothing
+    }
+
+instance Core.FromJSON DeleteDeveloperMetadataResponse where
+  parseJSON =
+    Core.withObject
+      "DeleteDeveloperMetadataResponse"
+      ( \o ->
+          DeleteDeveloperMetadataResponse
+            Core.<$> (o Core..:? "deletedDeveloperMetadata")
+      )
+
+instance Core.ToJSON DeleteDeveloperMetadataResponse where
+  toJSON DeleteDeveloperMetadataResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deletedDeveloperMetadata" Core..=)
+              Core.<$> deletedDeveloperMetadata
+          ]
+      )
+
+-- | 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:/ 'newDeleteDimensionGroupRequest' smart constructor.
+newtype DeleteDimensionGroupRequest = DeleteDimensionGroupRequest
+  { -- | The range of the group to be deleted.
+    range :: (Core.Maybe DimensionRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteDimensionGroupRequest' with the minimum fields required to make a request.
+newDeleteDimensionGroupRequest ::
+  DeleteDimensionGroupRequest
+newDeleteDimensionGroupRequest =
+  DeleteDimensionGroupRequest {range = Core.Nothing}
+
+instance Core.FromJSON DeleteDimensionGroupRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteDimensionGroupRequest"
+      (\o -> DeleteDimensionGroupRequest Core.<$> (o Core..:? "range"))
+
+instance Core.ToJSON DeleteDimensionGroupRequest where
+  toJSON DeleteDimensionGroupRequest {..} =
+    Core.object (Core.catMaybes [("range" Core..=) Core.<$> range])
+
+-- | The result of deleting a group.
+--
+-- /See:/ 'newDeleteDimensionGroupResponse' smart constructor.
+newtype DeleteDimensionGroupResponse = DeleteDimensionGroupResponse
+  { -- | All groups of a dimension after deleting a group from that dimension.
+    dimensionGroups :: (Core.Maybe [DimensionGroup])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteDimensionGroupResponse' with the minimum fields required to make a request.
+newDeleteDimensionGroupResponse ::
+  DeleteDimensionGroupResponse
+newDeleteDimensionGroupResponse =
+  DeleteDimensionGroupResponse {dimensionGroups = Core.Nothing}
+
+instance Core.FromJSON DeleteDimensionGroupResponse where
+  parseJSON =
+    Core.withObject
+      "DeleteDimensionGroupResponse"
+      ( \o ->
+          DeleteDimensionGroupResponse
+            Core.<$> (o Core..:? "dimensionGroups")
+      )
+
+instance Core.ToJSON DeleteDimensionGroupResponse where
+  toJSON DeleteDimensionGroupResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("dimensionGroups" Core..=) Core.<$> dimensionGroups]
+      )
+
+-- | Deletes the dimensions from the sheet.
+--
+-- /See:/ 'newDeleteDimensionRequest' smart constructor.
+newtype DeleteDimensionRequest = DeleteDimensionRequest
+  { -- | The dimensions to delete from the sheet.
+    range :: (Core.Maybe DimensionRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteDimensionRequest' with the minimum fields required to make a request.
+newDeleteDimensionRequest ::
+  DeleteDimensionRequest
+newDeleteDimensionRequest =
+  DeleteDimensionRequest {range = Core.Nothing}
+
+instance Core.FromJSON DeleteDimensionRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteDimensionRequest"
+      (\o -> DeleteDimensionRequest Core.<$> (o Core..:? "range"))
+
+instance Core.ToJSON DeleteDimensionRequest where
+  toJSON DeleteDimensionRequest {..} =
+    Core.object (Core.catMaybes [("range" Core..=) Core.<$> range])
+
+-- | Removes rows within this range that contain values in the specified columns that are duplicates of values in any previous row. Rows with identical values but different letter cases, formatting, or formulas are considered to be duplicates. This request also removes duplicate rows hidden from view (for example, due to a filter). When removing duplicates, the first instance of each duplicate row scanning from the top downwards is kept in the resulting range. Content outside of the specified range isn\'t removed, and rows considered duplicates do not have to be adjacent to each other in the range.
+--
+-- /See:/ 'newDeleteDuplicatesRequest' smart constructor.
+data DeleteDuplicatesRequest = DeleteDuplicatesRequest
+  { -- | The columns in the range to analyze for duplicate values. If no columns are selected then all columns are analyzed for duplicates.
+    comparisonColumns :: (Core.Maybe [DimensionRange]),
+    -- | The range to remove duplicates rows from.
+    range :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteDuplicatesRequest' with the minimum fields required to make a request.
+newDeleteDuplicatesRequest ::
+  DeleteDuplicatesRequest
+newDeleteDuplicatesRequest =
+  DeleteDuplicatesRequest
+    { comparisonColumns = Core.Nothing,
+      range = Core.Nothing
+    }
+
+instance Core.FromJSON DeleteDuplicatesRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteDuplicatesRequest"
+      ( \o ->
+          DeleteDuplicatesRequest
+            Core.<$> (o Core..:? "comparisonColumns")
+            Core.<*> (o Core..:? "range")
+      )
+
+instance Core.ToJSON DeleteDuplicatesRequest where
+  toJSON DeleteDuplicatesRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("comparisonColumns" Core..=) Core.<$> comparisonColumns,
+            ("range" Core..=) Core.<$> range
+          ]
+      )
+
+-- | The result of removing duplicates in a range.
+--
+-- /See:/ 'newDeleteDuplicatesResponse' smart constructor.
+newtype DeleteDuplicatesResponse = DeleteDuplicatesResponse
+  { -- | The number of duplicate rows removed.
+    duplicatesRemovedCount :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteDuplicatesResponse' with the minimum fields required to make a request.
+newDeleteDuplicatesResponse ::
+  DeleteDuplicatesResponse
+newDeleteDuplicatesResponse =
+  DeleteDuplicatesResponse {duplicatesRemovedCount = Core.Nothing}
+
+instance Core.FromJSON DeleteDuplicatesResponse where
+  parseJSON =
+    Core.withObject
+      "DeleteDuplicatesResponse"
+      ( \o ->
+          DeleteDuplicatesResponse
+            Core.<$> (o Core..:? "duplicatesRemovedCount")
+      )
+
+instance Core.ToJSON DeleteDuplicatesResponse where
+  toJSON DeleteDuplicatesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("duplicatesRemovedCount" Core..=)
+              Core.<$> duplicatesRemovedCount
+          ]
+      )
+
+-- | Deletes the embedded object with the given ID.
+--
+-- /See:/ 'newDeleteEmbeddedObjectRequest' smart constructor.
+newtype DeleteEmbeddedObjectRequest = DeleteEmbeddedObjectRequest
+  { -- | The ID of the embedded object to delete.
+    objectId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteEmbeddedObjectRequest' with the minimum fields required to make a request.
+newDeleteEmbeddedObjectRequest ::
+  DeleteEmbeddedObjectRequest
+newDeleteEmbeddedObjectRequest =
+  DeleteEmbeddedObjectRequest {objectId = Core.Nothing}
+
+instance Core.FromJSON DeleteEmbeddedObjectRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteEmbeddedObjectRequest"
+      ( \o ->
+          DeleteEmbeddedObjectRequest Core.<$> (o Core..:? "objectId")
+      )
+
+instance Core.ToJSON DeleteEmbeddedObjectRequest where
+  toJSON DeleteEmbeddedObjectRequest {..} =
+    Core.object
+      (Core.catMaybes [("objectId" Core..=) Core.<$> objectId])
+
+-- | Deletes a particular filter view.
+--
+-- /See:/ 'newDeleteFilterViewRequest' smart constructor.
+newtype DeleteFilterViewRequest = DeleteFilterViewRequest
+  { -- | The ID of the filter to delete.
+    filterId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteFilterViewRequest' with the minimum fields required to make a request.
+newDeleteFilterViewRequest ::
+  DeleteFilterViewRequest
+newDeleteFilterViewRequest =
+  DeleteFilterViewRequest {filterId = Core.Nothing}
+
+instance Core.FromJSON DeleteFilterViewRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteFilterViewRequest"
+      (\o -> DeleteFilterViewRequest Core.<$> (o Core..:? "filterId"))
+
+instance Core.ToJSON DeleteFilterViewRequest where
+  toJSON DeleteFilterViewRequest {..} =
+    Core.object
+      (Core.catMaybes [("filterId" Core..=) Core.<$> filterId])
+
+-- | Removes the named range with the given ID from the spreadsheet.
+--
+-- /See:/ 'newDeleteNamedRangeRequest' smart constructor.
+newtype DeleteNamedRangeRequest = DeleteNamedRangeRequest
+  { -- | The ID of the named range to delete.
+    namedRangeId :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteNamedRangeRequest' with the minimum fields required to make a request.
+newDeleteNamedRangeRequest ::
+  DeleteNamedRangeRequest
+newDeleteNamedRangeRequest =
+  DeleteNamedRangeRequest {namedRangeId = Core.Nothing}
+
+instance Core.FromJSON DeleteNamedRangeRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteNamedRangeRequest"
+      ( \o ->
+          DeleteNamedRangeRequest Core.<$> (o Core..:? "namedRangeId")
+      )
+
+instance Core.ToJSON DeleteNamedRangeRequest where
+  toJSON DeleteNamedRangeRequest {..} =
+    Core.object
+      (Core.catMaybes [("namedRangeId" Core..=) Core.<$> namedRangeId])
+
+-- | Deletes the protected range with the given ID.
+--
+-- /See:/ 'newDeleteProtectedRangeRequest' smart constructor.
+newtype DeleteProtectedRangeRequest = DeleteProtectedRangeRequest
+  { -- | The ID of the protected range to delete.
+    protectedRangeId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteProtectedRangeRequest' with the minimum fields required to make a request.
+newDeleteProtectedRangeRequest ::
+  DeleteProtectedRangeRequest
+newDeleteProtectedRangeRequest =
+  DeleteProtectedRangeRequest {protectedRangeId = Core.Nothing}
+
+instance Core.FromJSON DeleteProtectedRangeRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteProtectedRangeRequest"
+      ( \o ->
+          DeleteProtectedRangeRequest
+            Core.<$> (o Core..:? "protectedRangeId")
+      )
+
+instance Core.ToJSON DeleteProtectedRangeRequest where
+  toJSON DeleteProtectedRangeRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [("protectedRangeId" Core..=) Core.<$> protectedRangeId]
+      )
+
+-- | Deletes a range of cells, shifting other cells into the deleted area.
+--
+-- /See:/ 'newDeleteRangeRequest' smart constructor.
+data DeleteRangeRequest = DeleteRangeRequest
+  { -- | The range of cells to delete.
+    range :: (Core.Maybe GridRange),
+    -- | 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.
+    shiftDimension :: (Core.Maybe DeleteRangeRequest_ShiftDimension)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteRangeRequest' with the minimum fields required to make a request.
+newDeleteRangeRequest ::
+  DeleteRangeRequest
+newDeleteRangeRequest =
+  DeleteRangeRequest
+    { range = Core.Nothing,
+      shiftDimension = Core.Nothing
+    }
+
+instance Core.FromJSON DeleteRangeRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteRangeRequest"
+      ( \o ->
+          DeleteRangeRequest
+            Core.<$> (o Core..:? "range")
+            Core.<*> (o Core..:? "shiftDimension")
+      )
+
+instance Core.ToJSON DeleteRangeRequest where
+  toJSON DeleteRangeRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("range" Core..=) Core.<$> range,
+            ("shiftDimension" Core..=) Core.<$> shiftDimension
+          ]
+      )
+
+-- | Deletes the requested sheet.
+--
+-- /See:/ 'newDeleteSheetRequest' smart constructor.
+newtype DeleteSheetRequest = DeleteSheetRequest
+  { -- | The ID of the sheet to delete. If the sheet is of DATA_SOURCE type, the associated DataSource is also deleted.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteSheetRequest' with the minimum fields required to make a request.
+newDeleteSheetRequest ::
+  DeleteSheetRequest
+newDeleteSheetRequest = DeleteSheetRequest {sheetId = Core.Nothing}
+
+instance Core.FromJSON DeleteSheetRequest where
+  parseJSON =
+    Core.withObject
+      "DeleteSheetRequest"
+      (\o -> DeleteSheetRequest Core.<$> (o Core..:? "sheetId"))
+
+instance Core.ToJSON DeleteSheetRequest where
+  toJSON DeleteSheetRequest {..} =
+    Core.object
+      (Core.catMaybes [("sheetId" Core..=) Core.<$> sheetId])
+
+-- | 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:/ 'newDeveloperMetadata' smart constructor.
+data DeveloperMetadata = DeveloperMetadata
+  { -- | The location where the metadata is associated.
+    location :: (Core.Maybe DeveloperMetadataLocation),
+    -- | 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.
+    metadataId :: (Core.Maybe Core.Int32),
+    -- | The metadata key. There may be multiple metadata in a spreadsheet with the same key. Developer metadata must always have a key specified.
+    metadataKey :: (Core.Maybe Core.Text),
+    -- | Data associated with the metadata\'s key.
+    metadataValue :: (Core.Maybe Core.Text),
+    -- | The metadata visibility. Developer metadata must always have a visibility specified.
+    visibility :: (Core.Maybe DeveloperMetadata_Visibility)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeveloperMetadata' with the minimum fields required to make a request.
+newDeveloperMetadata ::
+  DeveloperMetadata
+newDeveloperMetadata =
+  DeveloperMetadata
+    { location = Core.Nothing,
+      metadataId = Core.Nothing,
+      metadataKey = Core.Nothing,
+      metadataValue = Core.Nothing,
+      visibility = Core.Nothing
+    }
+
+instance Core.FromJSON DeveloperMetadata where
+  parseJSON =
+    Core.withObject
+      "DeveloperMetadata"
+      ( \o ->
+          DeveloperMetadata
+            Core.<$> (o Core..:? "location")
+            Core.<*> (o Core..:? "metadataId")
+            Core.<*> (o Core..:? "metadataKey")
+            Core.<*> (o Core..:? "metadataValue")
+            Core.<*> (o Core..:? "visibility")
+      )
+
+instance Core.ToJSON DeveloperMetadata where
+  toJSON DeveloperMetadata {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("location" Core..=) Core.<$> location,
+            ("metadataId" Core..=) Core.<$> metadataId,
+            ("metadataKey" Core..=) Core.<$> metadataKey,
+            ("metadataValue" Core..=) Core.<$> metadataValue,
+            ("visibility" Core..=) Core.<$> visibility
+          ]
+      )
+
+-- | A location where metadata may be associated in a spreadsheet.
+--
+-- /See:/ 'newDeveloperMetadataLocation' smart constructor.
+data DeveloperMetadataLocation = DeveloperMetadataLocation
+  { -- | 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.
+    dimensionRange :: (Core.Maybe DimensionRange),
+    -- | The type of location this object represents. This field is read-only.
+    locationType :: (Core.Maybe DeveloperMetadataLocation_LocationType),
+    -- | The ID of the sheet when metadata is associated with an entire sheet.
+    sheetId :: (Core.Maybe Core.Int32),
+    -- | True when metadata is associated with an entire spreadsheet.
+    spreadsheet :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeveloperMetadataLocation' with the minimum fields required to make a request.
+newDeveloperMetadataLocation ::
+  DeveloperMetadataLocation
+newDeveloperMetadataLocation =
+  DeveloperMetadataLocation
+    { dimensionRange = Core.Nothing,
+      locationType = Core.Nothing,
+      sheetId = Core.Nothing,
+      spreadsheet = Core.Nothing
+    }
+
+instance Core.FromJSON DeveloperMetadataLocation where
+  parseJSON =
+    Core.withObject
+      "DeveloperMetadataLocation"
+      ( \o ->
+          DeveloperMetadataLocation
+            Core.<$> (o Core..:? "dimensionRange")
+            Core.<*> (o Core..:? "locationType")
+            Core.<*> (o Core..:? "sheetId")
+            Core.<*> (o Core..:? "spreadsheet")
+      )
+
+instance Core.ToJSON DeveloperMetadataLocation where
+  toJSON DeveloperMetadataLocation {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dimensionRange" Core..=) Core.<$> dimensionRange,
+            ("locationType" Core..=) Core.<$> locationType,
+            ("sheetId" Core..=) Core.<$> sheetId,
+            ("spreadsheet" Core..=) Core.<$> spreadsheet
+          ]
+      )
+
+-- | 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:/ 'newDeveloperMetadataLookup' smart constructor.
+data DeveloperMetadataLookup = DeveloperMetadataLookup
+  { -- | 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.
+    locationMatchingStrategy :: (Core.Maybe DeveloperMetadataLookup_LocationMatchingStrategy),
+    -- | 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.
+    locationType :: (Core.Maybe DeveloperMetadataLookup_LocationType),
+    -- | Limits the selected developer metadata to that which has a matching DeveloperMetadata.metadata_id.
+    metadataId :: (Core.Maybe Core.Int32),
+    -- | Limits the selected developer metadata to that which has a matching DeveloperMetadata.metadata_key.
+    metadataKey :: (Core.Maybe Core.Text),
+    -- | 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.
+    metadataLocation :: (Core.Maybe DeveloperMetadataLocation),
+    -- | Limits the selected developer metadata to that which has a matching DeveloperMetadata.metadata_value.
+    metadataValue :: (Core.Maybe Core.Text),
+    -- | Limits the selected developer metadata to that which has a matching DeveloperMetadata.visibility. If left unspecified, all developer metadata visible to the requesting project is considered.
+    visibility :: (Core.Maybe DeveloperMetadataLookup_Visibility)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeveloperMetadataLookup' with the minimum fields required to make a request.
+newDeveloperMetadataLookup ::
+  DeveloperMetadataLookup
+newDeveloperMetadataLookup =
+  DeveloperMetadataLookup
+    { locationMatchingStrategy = Core.Nothing,
+      locationType = Core.Nothing,
+      metadataId = Core.Nothing,
+      metadataKey = Core.Nothing,
+      metadataLocation = Core.Nothing,
+      metadataValue = Core.Nothing,
+      visibility = Core.Nothing
+    }
+
+instance Core.FromJSON DeveloperMetadataLookup where
+  parseJSON =
+    Core.withObject
+      "DeveloperMetadataLookup"
+      ( \o ->
+          DeveloperMetadataLookup
+            Core.<$> (o Core..:? "locationMatchingStrategy")
+            Core.<*> (o Core..:? "locationType")
+            Core.<*> (o Core..:? "metadataId")
+            Core.<*> (o Core..:? "metadataKey")
+            Core.<*> (o Core..:? "metadataLocation")
+            Core.<*> (o Core..:? "metadataValue")
+            Core.<*> (o Core..:? "visibility")
+      )
+
+instance Core.ToJSON DeveloperMetadataLookup where
+  toJSON DeveloperMetadataLookup {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("locationMatchingStrategy" Core..=)
+              Core.<$> locationMatchingStrategy,
+            ("locationType" Core..=) Core.<$> locationType,
+            ("metadataId" Core..=) Core.<$> metadataId,
+            ("metadataKey" Core..=) Core.<$> metadataKey,
+            ("metadataLocation" Core..=) Core.<$> metadataLocation,
+            ("metadataValue" Core..=) Core.<$> metadataValue,
+            ("visibility" Core..=) Core.<$> visibility
+          ]
+      )
+
+-- | 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:/ 'newDimensionGroup' smart constructor.
+data DimensionGroup = DimensionGroup
+  { -- | 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.
+    collapsed :: (Core.Maybe Core.Bool),
+    -- | The depth of the group, representing how many groups have a range that wholly contains the range of this group.
+    depth :: (Core.Maybe Core.Int32),
+    -- | The range over which this group exists.
+    range :: (Core.Maybe DimensionRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DimensionGroup' with the minimum fields required to make a request.
+newDimensionGroup ::
+  DimensionGroup
+newDimensionGroup =
+  DimensionGroup
+    { collapsed = Core.Nothing,
+      depth = Core.Nothing,
+      range = Core.Nothing
+    }
+
+instance Core.FromJSON DimensionGroup where
+  parseJSON =
+    Core.withObject
+      "DimensionGroup"
+      ( \o ->
+          DimensionGroup
+            Core.<$> (o Core..:? "collapsed")
+            Core.<*> (o Core..:? "depth")
+            Core.<*> (o Core..:? "range")
+      )
+
+instance Core.ToJSON DimensionGroup where
+  toJSON DimensionGroup {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("collapsed" Core..=) Core.<$> collapsed,
+            ("depth" Core..=) Core.<$> depth,
+            ("range" Core..=) Core.<$> range
+          ]
+      )
+
+-- | Properties about a dimension.
+--
+-- /See:/ 'newDimensionProperties' smart constructor.
+data DimensionProperties = DimensionProperties
+  { -- | Output only. If set, this is a column in a data source sheet.
+    dataSourceColumnReference :: (Core.Maybe DataSourceColumnReference),
+    -- | The developer metadata associated with a single row or column.
+    developerMetadata :: (Core.Maybe [DeveloperMetadata]),
+    -- | True if this dimension is being filtered. This field is read-only.
+    hiddenByFilter :: (Core.Maybe Core.Bool),
+    -- | True if this dimension is explicitly hidden.
+    hiddenByUser :: (Core.Maybe Core.Bool),
+    -- | The height (if a row) or width (if a column) of the dimension in pixels.
+    pixelSize :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DimensionProperties' with the minimum fields required to make a request.
+newDimensionProperties ::
+  DimensionProperties
+newDimensionProperties =
+  DimensionProperties
+    { dataSourceColumnReference = Core.Nothing,
+      developerMetadata = Core.Nothing,
+      hiddenByFilter = Core.Nothing,
+      hiddenByUser = Core.Nothing,
+      pixelSize = Core.Nothing
+    }
+
+instance Core.FromJSON DimensionProperties where
+  parseJSON =
+    Core.withObject
+      "DimensionProperties"
+      ( \o ->
+          DimensionProperties
+            Core.<$> (o Core..:? "dataSourceColumnReference")
+            Core.<*> (o Core..:? "developerMetadata")
+            Core.<*> (o Core..:? "hiddenByFilter")
+            Core.<*> (o Core..:? "hiddenByUser")
+            Core.<*> (o Core..:? "pixelSize")
+      )
+
+instance Core.ToJSON DimensionProperties where
+  toJSON DimensionProperties {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceColumnReference" Core..=)
+              Core.<$> dataSourceColumnReference,
+            ("developerMetadata" Core..=) Core.<$> developerMetadata,
+            ("hiddenByFilter" Core..=) Core.<$> hiddenByFilter,
+            ("hiddenByUser" Core..=) Core.<$> hiddenByUser,
+            ("pixelSize" Core..=) Core.<$> pixelSize
+          ]
+      )
+
+-- | 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:/ 'newDimensionRange' smart constructor.
+data DimensionRange = DimensionRange
+  { -- | The dimension of the span.
+    dimension :: (Core.Maybe DimensionRange_Dimension),
+    -- | The end (exclusive) of the span, or not set if unbounded.
+    endIndex :: (Core.Maybe Core.Int32),
+    -- | The sheet this span is on.
+    sheetId :: (Core.Maybe Core.Int32),
+    -- | The start (inclusive) of the span, or not set if unbounded.
+    startIndex :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DimensionRange' with the minimum fields required to make a request.
+newDimensionRange ::
+  DimensionRange
+newDimensionRange =
+  DimensionRange
+    { dimension = Core.Nothing,
+      endIndex = Core.Nothing,
+      sheetId = Core.Nothing,
+      startIndex = Core.Nothing
+    }
+
+instance Core.FromJSON DimensionRange where
+  parseJSON =
+    Core.withObject
+      "DimensionRange"
+      ( \o ->
+          DimensionRange
+            Core.<$> (o Core..:? "dimension")
+            Core.<*> (o Core..:? "endIndex")
+            Core.<*> (o Core..:? "sheetId")
+            Core.<*> (o Core..:? "startIndex")
+      )
+
+instance Core.ToJSON DimensionRange where
+  toJSON DimensionRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dimension" Core..=) Core.<$> dimension,
+            ("endIndex" Core..=) Core.<$> endIndex,
+            ("sheetId" Core..=) Core.<$> sheetId,
+            ("startIndex" Core..=) Core.<$> startIndex
+          ]
+      )
+
+-- | Duplicates a particular filter view.
+--
+-- /See:/ 'newDuplicateFilterViewRequest' smart constructor.
+newtype DuplicateFilterViewRequest = DuplicateFilterViewRequest
+  { -- | The ID of the filter being duplicated.
+    filterId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DuplicateFilterViewRequest' with the minimum fields required to make a request.
+newDuplicateFilterViewRequest ::
+  DuplicateFilterViewRequest
+newDuplicateFilterViewRequest =
+  DuplicateFilterViewRequest {filterId = Core.Nothing}
+
+instance Core.FromJSON DuplicateFilterViewRequest where
+  parseJSON =
+    Core.withObject
+      "DuplicateFilterViewRequest"
+      ( \o ->
+          DuplicateFilterViewRequest Core.<$> (o Core..:? "filterId")
+      )
+
+instance Core.ToJSON DuplicateFilterViewRequest where
+  toJSON DuplicateFilterViewRequest {..} =
+    Core.object
+      (Core.catMaybes [("filterId" Core..=) Core.<$> filterId])
+
+-- | The result of a filter view being duplicated.
+--
+-- /See:/ 'newDuplicateFilterViewResponse' smart constructor.
+newtype DuplicateFilterViewResponse = DuplicateFilterViewResponse
+  { -- | The newly created filter.
+    filter :: (Core.Maybe FilterView)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DuplicateFilterViewResponse' with the minimum fields required to make a request.
+newDuplicateFilterViewResponse ::
+  DuplicateFilterViewResponse
+newDuplicateFilterViewResponse =
+  DuplicateFilterViewResponse {filter = Core.Nothing}
+
+instance Core.FromJSON DuplicateFilterViewResponse where
+  parseJSON =
+    Core.withObject
+      "DuplicateFilterViewResponse"
+      (\o -> DuplicateFilterViewResponse Core.<$> (o Core..:? "filter"))
+
+instance Core.ToJSON DuplicateFilterViewResponse where
+  toJSON DuplicateFilterViewResponse {..} =
+    Core.object (Core.catMaybes [("filter" Core..=) Core.<$> filter])
+
+-- | Duplicates the contents of a sheet.
+--
+-- /See:/ 'newDuplicateSheetRequest' smart constructor.
+data DuplicateSheetRequest = DuplicateSheetRequest
+  { -- | The zero-based index where the new sheet should be inserted. The index of all sheets after this are incremented.
+    insertSheetIndex :: (Core.Maybe Core.Int32),
+    -- | 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.
+    newSheetId' :: (Core.Maybe Core.Int32),
+    -- | The name of the new sheet. If empty, a new name is chosen for you.
+    newSheetName' :: (Core.Maybe Core.Text),
+    -- | The sheet to duplicate. If the source sheet is of DATA_SOURCE type, its backing DataSource is also duplicated and associated with the new copy of the sheet. No data execution is triggered, the grid data of this sheet is also copied over but only available after the batch request completes.
+    sourceSheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DuplicateSheetRequest' with the minimum fields required to make a request.
+newDuplicateSheetRequest ::
+  DuplicateSheetRequest
+newDuplicateSheetRequest =
+  DuplicateSheetRequest
+    { insertSheetIndex = Core.Nothing,
+      newSheetId' = Core.Nothing,
+      newSheetName' = Core.Nothing,
+      sourceSheetId = Core.Nothing
+    }
+
+instance Core.FromJSON DuplicateSheetRequest where
+  parseJSON =
+    Core.withObject
+      "DuplicateSheetRequest"
+      ( \o ->
+          DuplicateSheetRequest
+            Core.<$> (o Core..:? "insertSheetIndex")
+            Core.<*> (o Core..:? "newSheetId")
+            Core.<*> (o Core..:? "newSheetName")
+            Core.<*> (o Core..:? "sourceSheetId")
+      )
+
+instance Core.ToJSON DuplicateSheetRequest where
+  toJSON DuplicateSheetRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("insertSheetIndex" Core..=) Core.<$> insertSheetIndex,
+            ("newSheetId" Core..=) Core.<$> newSheetId',
+            ("newSheetName" Core..=) Core.<$> newSheetName',
+            ("sourceSheetId" Core..=) Core.<$> sourceSheetId
+          ]
+      )
+
+-- | The result of duplicating a sheet.
+--
+-- /See:/ 'newDuplicateSheetResponse' smart constructor.
+newtype DuplicateSheetResponse = DuplicateSheetResponse
+  { -- | The properties of the duplicate sheet.
+    properties :: (Core.Maybe SheetProperties)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DuplicateSheetResponse' with the minimum fields required to make a request.
+newDuplicateSheetResponse ::
+  DuplicateSheetResponse
+newDuplicateSheetResponse =
+  DuplicateSheetResponse {properties = Core.Nothing}
+
+instance Core.FromJSON DuplicateSheetResponse where
+  parseJSON =
+    Core.withObject
+      "DuplicateSheetResponse"
+      (\o -> DuplicateSheetResponse Core.<$> (o Core..:? "properties"))
+
+instance Core.ToJSON DuplicateSheetResponse where
+  toJSON DuplicateSheetResponse {..} =
+    Core.object
+      (Core.catMaybes [("properties" Core..=) Core.<$> properties])
+
+-- | The editors of a protected range.
+--
+-- /See:/ 'newEditors' smart constructor.
+data Editors = Editors
+  { -- | 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.
+    domainUsersCanEdit :: (Core.Maybe Core.Bool),
+    -- | The email addresses of groups with edit access to the protected range.
+    groups :: (Core.Maybe [Core.Text]),
+    -- | The email addresses of users with edit access to the protected range.
+    users :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Editors' with the minimum fields required to make a request.
+newEditors ::
+  Editors
+newEditors =
+  Editors
+    { domainUsersCanEdit = Core.Nothing,
+      groups = Core.Nothing,
+      users = Core.Nothing
+    }
+
+instance Core.FromJSON Editors where
+  parseJSON =
+    Core.withObject
+      "Editors"
+      ( \o ->
+          Editors
+            Core.<$> (o Core..:? "domainUsersCanEdit")
+            Core.<*> (o Core..:? "groups")
+            Core.<*> (o Core..:? "users")
+      )
+
+instance Core.ToJSON Editors where
+  toJSON Editors {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("domainUsersCanEdit" Core..=) Core.<$> domainUsersCanEdit,
+            ("groups" Core..=) Core.<$> groups,
+            ("users" Core..=) Core.<$> users
+          ]
+      )
+
+-- | A chart embedded in a sheet.
+--
+-- /See:/ 'newEmbeddedChart' smart constructor.
+data EmbeddedChart = EmbeddedChart
+  { -- | The border of the chart.
+    border :: (Core.Maybe EmbeddedObjectBorder),
+    -- | The ID of the chart.
+    chartId :: (Core.Maybe Core.Int32),
+    -- | The position of the chart.
+    position :: (Core.Maybe EmbeddedObjectPosition),
+    -- | The specification of the chart.
+    spec :: (Core.Maybe ChartSpec)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'EmbeddedChart' with the minimum fields required to make a request.
+newEmbeddedChart ::
+  EmbeddedChart
+newEmbeddedChart =
+  EmbeddedChart
+    { border = Core.Nothing,
+      chartId = Core.Nothing,
+      position = Core.Nothing,
+      spec = Core.Nothing
+    }
+
+instance Core.FromJSON EmbeddedChart where
+  parseJSON =
+    Core.withObject
+      "EmbeddedChart"
+      ( \o ->
+          EmbeddedChart
+            Core.<$> (o Core..:? "border")
+            Core.<*> (o Core..:? "chartId")
+            Core.<*> (o Core..:? "position")
+            Core.<*> (o Core..:? "spec")
+      )
+
+instance Core.ToJSON EmbeddedChart where
+  toJSON EmbeddedChart {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("border" Core..=) Core.<$> border,
+            ("chartId" Core..=) Core.<$> chartId,
+            ("position" Core..=) Core.<$> position,
+            ("spec" Core..=) Core.<$> spec
+          ]
+      )
+
+-- | A border along an embedded object.
+--
+-- /See:/ 'newEmbeddedObjectBorder' smart constructor.
+data EmbeddedObjectBorder = EmbeddedObjectBorder
+  { -- | The color of the border. Deprecated: Use color_style.
+    color :: (Core.Maybe Color),
+    -- | The color of the border. If color is also set, this field takes precedence.
+    colorStyle :: (Core.Maybe ColorStyle)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'EmbeddedObjectBorder' with the minimum fields required to make a request.
+newEmbeddedObjectBorder ::
+  EmbeddedObjectBorder
+newEmbeddedObjectBorder =
+  EmbeddedObjectBorder
+    { color = Core.Nothing,
+      colorStyle = Core.Nothing
+    }
+
+instance Core.FromJSON EmbeddedObjectBorder where
+  parseJSON =
+    Core.withObject
+      "EmbeddedObjectBorder"
+      ( \o ->
+          EmbeddedObjectBorder
+            Core.<$> (o Core..:? "color")
+            Core.<*> (o Core..:? "colorStyle")
+      )
+
+instance Core.ToJSON EmbeddedObjectBorder where
+  toJSON EmbeddedObjectBorder {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("color" Core..=) Core.<$> color,
+            ("colorStyle" Core..=) Core.<$> colorStyle
+          ]
+      )
+
+-- | The position of an embedded object such as a chart.
+--
+-- /See:/ 'newEmbeddedObjectPosition' smart constructor.
+data EmbeddedObjectPosition = EmbeddedObjectPosition
+  { -- | If true, the embedded object is put on a new sheet whose ID is chosen for you. Used only when writing.
+    newSheet' :: (Core.Maybe Core.Bool),
+    -- | The position at which the object is overlaid on top of a grid.
+    overlayPosition :: (Core.Maybe OverlayPosition),
+    -- | The sheet this is on. Set only if the embedded object is on its own sheet. Must be non-negative.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'EmbeddedObjectPosition' with the minimum fields required to make a request.
+newEmbeddedObjectPosition ::
+  EmbeddedObjectPosition
+newEmbeddedObjectPosition =
+  EmbeddedObjectPosition
+    { newSheet' = Core.Nothing,
+      overlayPosition = Core.Nothing,
+      sheetId = Core.Nothing
+    }
+
+instance Core.FromJSON EmbeddedObjectPosition where
+  parseJSON =
+    Core.withObject
+      "EmbeddedObjectPosition"
+      ( \o ->
+          EmbeddedObjectPosition
+            Core.<$> (o Core..:? "newSheet")
+            Core.<*> (o Core..:? "overlayPosition")
+            Core.<*> (o Core..:? "sheetId")
+      )
+
+instance Core.ToJSON EmbeddedObjectPosition where
+  toJSON EmbeddedObjectPosition {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("newSheet" Core..=) Core.<$> newSheet',
+            ("overlayPosition" Core..=) Core.<$> overlayPosition,
+            ("sheetId" Core..=) Core.<$> sheetId
+          ]
+      )
+
+-- | An error in a cell.
+--
+-- /See:/ 'newErrorValue' smart constructor.
+data ErrorValue = ErrorValue
+  { -- | A message with more information about the error (in the spreadsheet\'s locale).
+    message :: (Core.Maybe Core.Text),
+    -- | The type of error.
+    type' :: (Core.Maybe ErrorValue_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ErrorValue' with the minimum fields required to make a request.
+newErrorValue ::
+  ErrorValue
+newErrorValue =
+  ErrorValue {message = Core.Nothing, type' = Core.Nothing}
+
+instance Core.FromJSON ErrorValue where
+  parseJSON =
+    Core.withObject
+      "ErrorValue"
+      ( \o ->
+          ErrorValue
+            Core.<$> (o Core..:? "message")
+            Core.<*> (o Core..:? "type")
+      )
+
+instance Core.ToJSON ErrorValue where
+  toJSON ErrorValue {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("message" Core..=) Core.<$> message,
+            ("type" Core..=) Core.<$> type'
+          ]
+      )
+
+-- | The kinds of value that a cell in a spreadsheet can have.
+--
+-- /See:/ 'newExtendedValue' smart constructor.
+data ExtendedValue = ExtendedValue
+  { -- | Represents a boolean value.
+    boolValue :: (Core.Maybe Core.Bool),
+    -- | Represents an error. This field is read-only.
+    errorValue :: (Core.Maybe ErrorValue),
+    -- | Represents a formula.
+    formulaValue :: (Core.Maybe Core.Text),
+    -- | Represents a double value. Note: Dates, Times and DateTimes are represented as doubles in SERIAL_NUMBER format.
+    numberValue :: (Core.Maybe Core.Double),
+    -- | 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\"@.
+    stringValue :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExtendedValue' with the minimum fields required to make a request.
+newExtendedValue ::
+  ExtendedValue
+newExtendedValue =
+  ExtendedValue
+    { boolValue = Core.Nothing,
+      errorValue = Core.Nothing,
+      formulaValue = Core.Nothing,
+      numberValue = Core.Nothing,
+      stringValue = Core.Nothing
+    }
+
+instance Core.FromJSON ExtendedValue where
+  parseJSON =
+    Core.withObject
+      "ExtendedValue"
+      ( \o ->
+          ExtendedValue
+            Core.<$> (o Core..:? "boolValue")
+            Core.<*> (o Core..:? "errorValue")
+            Core.<*> (o Core..:? "formulaValue")
+            Core.<*> (o Core..:? "numberValue")
+            Core.<*> (o Core..:? "stringValue")
+      )
+
+instance Core.ToJSON ExtendedValue where
+  toJSON ExtendedValue {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("boolValue" Core..=) Core.<$> boolValue,
+            ("errorValue" Core..=) Core.<$> errorValue,
+            ("formulaValue" Core..=) Core.<$> formulaValue,
+            ("numberValue" Core..=) Core.<$> numberValue,
+            ("stringValue" Core..=) Core.<$> stringValue
+          ]
+      )
+
+-- | Criteria for showing\/hiding rows in a filter or filter view.
+--
+-- /See:/ 'newFilterCriteria' smart constructor.
+data FilterCriteria = FilterCriteria
+  { -- | A condition that must be true for values to be shown. (This does not override hidden_values -- if a value is listed there, it will still be hidden.)
+    condition :: (Core.Maybe BooleanCondition),
+    -- | Values that should be hidden.
+    hiddenValues :: (Core.Maybe [Core.Text]),
+    -- | The background fill color to filter by; only cells with this fill color are shown. Mutually exclusive with visible/foreground/color. Deprecated: Use visible/background/color_style.
+    visibleBackgroundColor :: (Core.Maybe Color),
+    -- | The background fill color to filter by; only cells with this fill color are shown. This field is mutually exclusive with visible/foreground/color, and must be set to an RGB-type color. If visible/background/color is also set, this field takes precedence.
+    visibleBackgroundColorStyle :: (Core.Maybe ColorStyle),
+    -- | The foreground color to filter by; only cells with this foreground color are shown. Mutually exclusive with visible/background/color. Deprecated: Use visible/foreground/color_style.
+    visibleForegroundColor :: (Core.Maybe Color),
+    -- | The foreground color to filter by; only cells with this foreground color are shown. This field is mutually exclusive with visible/background/color, and must be set to an RGB-type color. If visible/foreground/color is also set, this field takes precedence.
+    visibleForegroundColorStyle :: (Core.Maybe ColorStyle)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FilterCriteria' with the minimum fields required to make a request.
+newFilterCriteria ::
+  FilterCriteria
+newFilterCriteria =
+  FilterCriteria
+    { condition = Core.Nothing,
+      hiddenValues = Core.Nothing,
+      visibleBackgroundColor = Core.Nothing,
+      visibleBackgroundColorStyle = Core.Nothing,
+      visibleForegroundColor = Core.Nothing,
+      visibleForegroundColorStyle = Core.Nothing
+    }
+
+instance Core.FromJSON FilterCriteria where
+  parseJSON =
+    Core.withObject
+      "FilterCriteria"
+      ( \o ->
+          FilterCriteria
+            Core.<$> (o Core..:? "condition")
+            Core.<*> (o Core..:? "hiddenValues")
+            Core.<*> (o Core..:? "visibleBackgroundColor")
+            Core.<*> (o Core..:? "visibleBackgroundColorStyle")
+            Core.<*> (o Core..:? "visibleForegroundColor")
+            Core.<*> (o Core..:? "visibleForegroundColorStyle")
+      )
+
+instance Core.ToJSON FilterCriteria where
+  toJSON FilterCriteria {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("condition" Core..=) Core.<$> condition,
+            ("hiddenValues" Core..=) Core.<$> hiddenValues,
+            ("visibleBackgroundColor" Core..=) Core.<$> visibleBackgroundColor,
+            ("visibleBackgroundColorStyle" Core..=)
+              Core.<$> visibleBackgroundColorStyle,
+            ("visibleForegroundColor" Core..=) Core.<$> visibleForegroundColor,
+            ("visibleForegroundColorStyle" Core..=)
+              Core.<$> visibleForegroundColorStyle
+          ]
+      )
+
+-- | The filter criteria associated with a specific column.
+--
+-- /See:/ 'newFilterSpec' smart constructor.
+data FilterSpec = FilterSpec
+  { -- | The zero-based column index.
+    columnIndex :: (Core.Maybe Core.Int32),
+    -- | Reference to a data source column.
+    dataSourceColumnReference :: (Core.Maybe DataSourceColumnReference),
+    -- | The criteria for the column.
+    filterCriteria :: (Core.Maybe FilterCriteria)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FilterSpec' with the minimum fields required to make a request.
+newFilterSpec ::
+  FilterSpec
+newFilterSpec =
+  FilterSpec
+    { columnIndex = Core.Nothing,
+      dataSourceColumnReference = Core.Nothing,
+      filterCriteria = Core.Nothing
+    }
+
+instance Core.FromJSON FilterSpec where
+  parseJSON =
+    Core.withObject
+      "FilterSpec"
+      ( \o ->
+          FilterSpec
+            Core.<$> (o Core..:? "columnIndex")
+            Core.<*> (o Core..:? "dataSourceColumnReference")
+            Core.<*> (o Core..:? "filterCriteria")
+      )
+
+instance Core.ToJSON FilterSpec where
+  toJSON FilterSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("columnIndex" Core..=) Core.<$> columnIndex,
+            ("dataSourceColumnReference" Core..=)
+              Core.<$> dataSourceColumnReference,
+            ("filterCriteria" Core..=) Core.<$> filterCriteria
+          ]
+      )
+
+-- | A filter view.
+--
+-- /See:/ 'newFilterView' smart constructor.
+data FilterView = FilterView
+  { -- | 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. This field is deprecated in favor of filter_specs.
+    criteria :: (Core.Maybe FilterView_Criteria),
+    -- | The filter criteria for showing\/hiding values per column. Both criteria and filter_specs are populated in responses. If both fields are specified in an update request, this field takes precedence.
+    filterSpecs :: (Core.Maybe [FilterSpec]),
+    -- | The ID of the filter view.
+    filterViewId :: (Core.Maybe Core.Int32),
+    -- | The named range this filter view is backed by, if any. When writing, only one of range or named/range/id may be set.
+    namedRangeId :: (Core.Maybe Core.Text),
+    -- | The range this filter view covers. When writing, only one of range or named/range/id may be set.
+    range :: (Core.Maybe GridRange),
+    -- | The sort order per column. Later specifications are used when values are equal in the earlier specifications.
+    sortSpecs :: (Core.Maybe [SortSpec]),
+    -- | The name of the filter view.
+    title :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FilterView' with the minimum fields required to make a request.
+newFilterView ::
+  FilterView
+newFilterView =
+  FilterView
+    { criteria = Core.Nothing,
+      filterSpecs = Core.Nothing,
+      filterViewId = Core.Nothing,
+      namedRangeId = Core.Nothing,
+      range = Core.Nothing,
+      sortSpecs = Core.Nothing,
+      title = Core.Nothing
+    }
+
+instance Core.FromJSON FilterView where
+  parseJSON =
+    Core.withObject
+      "FilterView"
+      ( \o ->
+          FilterView
+            Core.<$> (o Core..:? "criteria")
+            Core.<*> (o Core..:? "filterSpecs")
+            Core.<*> (o Core..:? "filterViewId")
+            Core.<*> (o Core..:? "namedRangeId")
+            Core.<*> (o Core..:? "range")
+            Core.<*> (o Core..:? "sortSpecs")
+            Core.<*> (o Core..:? "title")
+      )
+
+instance Core.ToJSON FilterView where
+  toJSON FilterView {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("criteria" Core..=) Core.<$> criteria,
+            ("filterSpecs" Core..=) Core.<$> filterSpecs,
+            ("filterViewId" Core..=) Core.<$> filterViewId,
+            ("namedRangeId" Core..=) Core.<$> namedRangeId,
+            ("range" Core..=) Core.<$> range,
+            ("sortSpecs" Core..=) Core.<$> sortSpecs,
+            ("title" Core..=) Core.<$> title
+          ]
+      )
+
+-- | 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. This field is deprecated in favor of filter_specs.
+--
+-- /See:/ 'newFilterView_Criteria' smart constructor.
+newtype FilterView_Criteria = FilterView_Criteria
+  { additional :: (Core.HashMap Core.Text FilterCriteria)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FilterView_Criteria' with the minimum fields required to make a request.
+newFilterView_Criteria ::
+  -- |  See 'additional'.
+  Core.HashMap Core.Text FilterCriteria ->
+  FilterView_Criteria
+newFilterView_Criteria additional =
+  FilterView_Criteria {additional = additional}
+
+instance Core.FromJSON FilterView_Criteria where
+  parseJSON =
+    Core.withObject
+      "FilterView_Criteria"
+      (\o -> FilterView_Criteria Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON FilterView_Criteria where
+  toJSON FilterView_Criteria {..} = Core.toJSON additional
+
+-- | Finds and replaces data in cells over a range, sheet, or all sheets.
+--
+-- /See:/ 'newFindReplaceRequest' smart constructor.
+data FindReplaceRequest = FindReplaceRequest
+  { -- | True to find\/replace over all sheets.
+    allSheets :: (Core.Maybe Core.Bool),
+    -- | The value to search.
+    find :: (Core.Maybe Core.Text),
+    -- | True if the search should include cells with formulas. False to skip cells with formulas.
+    includeFormulas :: (Core.Maybe Core.Bool),
+    -- | True if the search is case sensitive.
+    matchCase :: (Core.Maybe Core.Bool),
+    -- | True if the find value should match the entire cell.
+    matchEntireCell :: (Core.Maybe Core.Bool),
+    -- | The range to find\/replace over.
+    range :: (Core.Maybe GridRange),
+    -- | The value to use as the replacement.
+    replacement :: (Core.Maybe Core.Text),
+    -- | 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.
+    searchByRegex :: (Core.Maybe Core.Bool),
+    -- | The sheet to find\/replace over.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FindReplaceRequest' with the minimum fields required to make a request.
+newFindReplaceRequest ::
+  FindReplaceRequest
+newFindReplaceRequest =
+  FindReplaceRequest
+    { allSheets = Core.Nothing,
+      find = Core.Nothing,
+      includeFormulas = Core.Nothing,
+      matchCase = Core.Nothing,
+      matchEntireCell = Core.Nothing,
+      range = Core.Nothing,
+      replacement = Core.Nothing,
+      searchByRegex = Core.Nothing,
+      sheetId = Core.Nothing
+    }
+
+instance Core.FromJSON FindReplaceRequest where
+  parseJSON =
+    Core.withObject
+      "FindReplaceRequest"
+      ( \o ->
+          FindReplaceRequest
+            Core.<$> (o Core..:? "allSheets")
+            Core.<*> (o Core..:? "find")
+            Core.<*> (o Core..:? "includeFormulas")
+            Core.<*> (o Core..:? "matchCase")
+            Core.<*> (o Core..:? "matchEntireCell")
+            Core.<*> (o Core..:? "range")
+            Core.<*> (o Core..:? "replacement")
+            Core.<*> (o Core..:? "searchByRegex")
+            Core.<*> (o Core..:? "sheetId")
+      )
+
+instance Core.ToJSON FindReplaceRequest where
+  toJSON FindReplaceRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("allSheets" Core..=) Core.<$> allSheets,
+            ("find" Core..=) Core.<$> find,
+            ("includeFormulas" Core..=) Core.<$> includeFormulas,
+            ("matchCase" Core..=) Core.<$> matchCase,
+            ("matchEntireCell" Core..=) Core.<$> matchEntireCell,
+            ("range" Core..=) Core.<$> range,
+            ("replacement" Core..=) Core.<$> replacement,
+            ("searchByRegex" Core..=) Core.<$> searchByRegex,
+            ("sheetId" Core..=) Core.<$> sheetId
+          ]
+      )
+
+-- | The result of the find\/replace.
+--
+-- /See:/ 'newFindReplaceResponse' smart constructor.
+data FindReplaceResponse = FindReplaceResponse
+  { -- | The number of formula cells changed.
+    formulasChanged :: (Core.Maybe Core.Int32),
+    -- | 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\"@.
+    occurrencesChanged :: (Core.Maybe Core.Int32),
+    -- | The number of rows changed.
+    rowsChanged :: (Core.Maybe Core.Int32),
+    -- | The number of sheets changed.
+    sheetsChanged :: (Core.Maybe Core.Int32),
+    -- | The number of non-formula cells changed.
+    valuesChanged :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FindReplaceResponse' with the minimum fields required to make a request.
+newFindReplaceResponse ::
+  FindReplaceResponse
+newFindReplaceResponse =
+  FindReplaceResponse
+    { formulasChanged = Core.Nothing,
+      occurrencesChanged = Core.Nothing,
+      rowsChanged = Core.Nothing,
+      sheetsChanged = Core.Nothing,
+      valuesChanged = Core.Nothing
+    }
+
+instance Core.FromJSON FindReplaceResponse where
+  parseJSON =
+    Core.withObject
+      "FindReplaceResponse"
+      ( \o ->
+          FindReplaceResponse
+            Core.<$> (o Core..:? "formulasChanged")
+            Core.<*> (o Core..:? "occurrencesChanged")
+            Core.<*> (o Core..:? "rowsChanged")
+            Core.<*> (o Core..:? "sheetsChanged")
+            Core.<*> (o Core..:? "valuesChanged")
+      )
+
+instance Core.ToJSON FindReplaceResponse where
+  toJSON FindReplaceResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("formulasChanged" Core..=) Core.<$> formulasChanged,
+            ("occurrencesChanged" Core..=) Core.<$> occurrencesChanged,
+            ("rowsChanged" Core..=) Core.<$> rowsChanged,
+            ("sheetsChanged" Core..=) Core.<$> sheetsChanged,
+            ("valuesChanged" Core..=) Core.<$> valuesChanged
+          ]
+      )
+
+-- | The request for retrieving a Spreadsheet.
+--
+-- /See:/ 'newGetSpreadsheetByDataFilterRequest' smart constructor.
+data GetSpreadsheetByDataFilterRequest = GetSpreadsheetByDataFilterRequest
+  { -- | The DataFilters used to select which ranges to retrieve from the spreadsheet.
+    dataFilters :: (Core.Maybe [DataFilter]),
+    -- | True if grid data should be returned. This parameter is ignored if a field mask was set in the request.
+    includeGridData :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GetSpreadsheetByDataFilterRequest' with the minimum fields required to make a request.
+newGetSpreadsheetByDataFilterRequest ::
+  GetSpreadsheetByDataFilterRequest
+newGetSpreadsheetByDataFilterRequest =
+  GetSpreadsheetByDataFilterRequest
+    { dataFilters = Core.Nothing,
+      includeGridData = Core.Nothing
+    }
+
+instance Core.FromJSON GetSpreadsheetByDataFilterRequest where
+  parseJSON =
+    Core.withObject
+      "GetSpreadsheetByDataFilterRequest"
+      ( \o ->
+          GetSpreadsheetByDataFilterRequest
+            Core.<$> (o Core..:? "dataFilters")
+            Core.<*> (o Core..:? "includeGridData")
+      )
+
+instance Core.ToJSON GetSpreadsheetByDataFilterRequest where
+  toJSON GetSpreadsheetByDataFilterRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataFilters" Core..=) Core.<$> dataFilters,
+            ("includeGridData" Core..=) Core.<$> includeGridData
+          ]
+      )
+
+-- | 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:/ 'newGradientRule' smart constructor.
+data GradientRule = GradientRule
+  { -- | The final interpolation point.
+    maxpoint :: (Core.Maybe InterpolationPoint),
+    -- | An optional midway interpolation point.
+    midpoint :: (Core.Maybe InterpolationPoint),
+    -- | The starting interpolation point.
+    minpoint :: (Core.Maybe InterpolationPoint)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GradientRule' with the minimum fields required to make a request.
+newGradientRule ::
+  GradientRule
+newGradientRule =
+  GradientRule
+    { maxpoint = Core.Nothing,
+      midpoint = Core.Nothing,
+      minpoint = Core.Nothing
+    }
+
+instance Core.FromJSON GradientRule where
+  parseJSON =
+    Core.withObject
+      "GradientRule"
+      ( \o ->
+          GradientRule
+            Core.<$> (o Core..:? "maxpoint")
+            Core.<*> (o Core..:? "midpoint")
+            Core.<*> (o Core..:? "minpoint")
+      )
+
+instance Core.ToJSON GradientRule where
+  toJSON GradientRule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("maxpoint" Core..=) Core.<$> maxpoint,
+            ("midpoint" Core..=) Core.<$> midpoint,
+            ("minpoint" Core..=) Core.<$> minpoint
+          ]
+      )
+
+-- | A coordinate in a sheet. All indexes are zero-based.
+--
+-- /See:/ 'newGridCoordinate' smart constructor.
+data GridCoordinate = GridCoordinate
+  { -- | The column index of the coordinate.
+    columnIndex :: (Core.Maybe Core.Int32),
+    -- | The row index of the coordinate.
+    rowIndex :: (Core.Maybe Core.Int32),
+    -- | The sheet this coordinate is on.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GridCoordinate' with the minimum fields required to make a request.
+newGridCoordinate ::
+  GridCoordinate
+newGridCoordinate =
+  GridCoordinate
+    { columnIndex = Core.Nothing,
+      rowIndex = Core.Nothing,
+      sheetId = Core.Nothing
+    }
+
+instance Core.FromJSON GridCoordinate where
+  parseJSON =
+    Core.withObject
+      "GridCoordinate"
+      ( \o ->
+          GridCoordinate
+            Core.<$> (o Core..:? "columnIndex")
+            Core.<*> (o Core..:? "rowIndex")
+            Core.<*> (o Core..:? "sheetId")
+      )
+
+instance Core.ToJSON GridCoordinate where
+  toJSON GridCoordinate {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("columnIndex" Core..=) Core.<$> columnIndex,
+            ("rowIndex" Core..=) Core.<$> rowIndex,
+            ("sheetId" Core..=) Core.<$> sheetId
+          ]
+      )
+
+-- | Data in the grid, as well as metadata about the dimensions.
+--
+-- /See:/ 'newGridData' smart constructor.
+data GridData = GridData
+  { -- | Metadata about the requested columns in the grid, starting with the column in start_column.
+    columnMetadata :: (Core.Maybe [DimensionProperties]),
+    -- | 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.
+    rowData :: (Core.Maybe [RowData]),
+    -- | Metadata about the requested rows in the grid, starting with the row in start_row.
+    rowMetadata :: (Core.Maybe [DimensionProperties]),
+    -- | The first column this GridData refers to, zero-based.
+    startColumn :: (Core.Maybe Core.Int32),
+    -- | The first row this GridData refers to, zero-based.
+    startRow :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GridData' with the minimum fields required to make a request.
+newGridData ::
+  GridData
+newGridData =
+  GridData
+    { columnMetadata = Core.Nothing,
+      rowData = Core.Nothing,
+      rowMetadata = Core.Nothing,
+      startColumn = Core.Nothing,
+      startRow = Core.Nothing
+    }
+
+instance Core.FromJSON GridData where
+  parseJSON =
+    Core.withObject
+      "GridData"
+      ( \o ->
+          GridData
+            Core.<$> (o Core..:? "columnMetadata")
+            Core.<*> (o Core..:? "rowData")
+            Core.<*> (o Core..:? "rowMetadata")
+            Core.<*> (o Core..:? "startColumn")
+            Core.<*> (o Core..:? "startRow")
+      )
+
+instance Core.ToJSON GridData where
+  toJSON GridData {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("columnMetadata" Core..=) Core.<$> columnMetadata,
+            ("rowData" Core..=) Core.<$> rowData,
+            ("rowMetadata" Core..=) Core.<$> rowMetadata,
+            ("startColumn" Core..=) Core.<$> startColumn,
+            ("startRow" Core..=) Core.<$> startRow
+          ]
+      )
+
+-- | Properties of a grid.
+--
+-- /See:/ 'newGridProperties' smart constructor.
+data GridProperties = GridProperties
+  { -- | The number of columns in the grid.
+    columnCount :: (Core.Maybe Core.Int32),
+    -- | True if the column grouping control toggle is shown after the group.
+    columnGroupControlAfter :: (Core.Maybe Core.Bool),
+    -- | The number of columns that are frozen in the grid.
+    frozenColumnCount :: (Core.Maybe Core.Int32),
+    -- | The number of rows that are frozen in the grid.
+    frozenRowCount :: (Core.Maybe Core.Int32),
+    -- | True if the grid isn\'t showing gridlines in the UI.
+    hideGridlines :: (Core.Maybe Core.Bool),
+    -- | The number of rows in the grid.
+    rowCount :: (Core.Maybe Core.Int32),
+    -- | True if the row grouping control toggle is shown after the group.
+    rowGroupControlAfter :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GridProperties' with the minimum fields required to make a request.
+newGridProperties ::
+  GridProperties
+newGridProperties =
+  GridProperties
+    { columnCount = Core.Nothing,
+      columnGroupControlAfter = Core.Nothing,
+      frozenColumnCount = Core.Nothing,
+      frozenRowCount = Core.Nothing,
+      hideGridlines = Core.Nothing,
+      rowCount = Core.Nothing,
+      rowGroupControlAfter = Core.Nothing
+    }
+
+instance Core.FromJSON GridProperties where
+  parseJSON =
+    Core.withObject
+      "GridProperties"
+      ( \o ->
+          GridProperties
+            Core.<$> (o Core..:? "columnCount")
+            Core.<*> (o Core..:? "columnGroupControlAfter")
+            Core.<*> (o Core..:? "frozenColumnCount")
+            Core.<*> (o Core..:? "frozenRowCount")
+            Core.<*> (o Core..:? "hideGridlines")
+            Core.<*> (o Core..:? "rowCount")
+            Core.<*> (o Core..:? "rowGroupControlAfter")
+      )
+
+instance Core.ToJSON GridProperties where
+  toJSON GridProperties {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("columnCount" Core..=) Core.<$> columnCount,
+            ("columnGroupControlAfter" Core..=)
+              Core.<$> columnGroupControlAfter,
+            ("frozenColumnCount" Core..=) Core.<$> frozenColumnCount,
+            ("frozenRowCount" Core..=) Core.<$> frozenRowCount,
+            ("hideGridlines" Core..=) Core.<$> hideGridlines,
+            ("rowCount" Core..=) Core.<$> rowCount,
+            ("rowGroupControlAfter" Core..=) Core.<$> rowGroupControlAfter
+          ]
+      )
+
+-- | A range on a sheet. All indexes are zero-based. Indexes are half open, i.e. 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 123456, then: @Sheet1!A1:A1 == sheet_id: 123456, start_row_index: 0, end_row_index: 1, start_column_index: 0, end_column_index: 1@ @Sheet1!A3:B4 == sheet_id: 123456, start_row_index: 2, end_row_index: 4, start_column_index: 0, end_column_index: 2@ @Sheet1!A:B == sheet_id: 123456, start_column_index: 0, end_column_index: 2@ @Sheet1!A5:B == sheet_id: 123456, start_row_index: 4, start_column_index: 0, end_column_index: 2@ @Sheet1 == sheet_id: 123456@ 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:/ 'newGridRange' smart constructor.
+data GridRange = GridRange
+  { -- | The end column (exclusive) of the range, or not set if unbounded.
+    endColumnIndex :: (Core.Maybe Core.Int32),
+    -- | The end row (exclusive) of the range, or not set if unbounded.
+    endRowIndex :: (Core.Maybe Core.Int32),
+    -- | The sheet this range is on.
+    sheetId :: (Core.Maybe Core.Int32),
+    -- | The start column (inclusive) of the range, or not set if unbounded.
+    startColumnIndex :: (Core.Maybe Core.Int32),
+    -- | The start row (inclusive) of the range, or not set if unbounded.
+    startRowIndex :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GridRange' with the minimum fields required to make a request.
+newGridRange ::
+  GridRange
+newGridRange =
+  GridRange
+    { endColumnIndex = Core.Nothing,
+      endRowIndex = Core.Nothing,
+      sheetId = Core.Nothing,
+      startColumnIndex = Core.Nothing,
+      startRowIndex = Core.Nothing
+    }
+
+instance Core.FromJSON GridRange where
+  parseJSON =
+    Core.withObject
+      "GridRange"
+      ( \o ->
+          GridRange
+            Core.<$> (o Core..:? "endColumnIndex")
+            Core.<*> (o Core..:? "endRowIndex")
+            Core.<*> (o Core..:? "sheetId")
+            Core.<*> (o Core..:? "startColumnIndex")
+            Core.<*> (o Core..:? "startRowIndex")
+      )
+
+instance Core.ToJSON GridRange where
+  toJSON GridRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("endColumnIndex" Core..=) Core.<$> endColumnIndex,
+            ("endRowIndex" Core..=) Core.<$> endRowIndex,
+            ("sheetId" Core..=) Core.<$> sheetId,
+            ("startColumnIndex" Core..=) Core.<$> startColumnIndex,
+            ("startRowIndex" Core..=) Core.<$> startRowIndex
+          ]
+      )
+
+-- | A 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:/ 'newHistogramChartSpec' smart constructor.
+data HistogramChartSpec = HistogramChartSpec
+  { -- | 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.
+    bucketSize :: (Core.Maybe Core.Double),
+    -- | The position of the chart legend.
+    legendPosition :: (Core.Maybe HistogramChartSpec_LegendPosition),
+    -- | 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.
+    outlierPercentile :: (Core.Maybe Core.Double),
+    -- | 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.
+    series :: (Core.Maybe [HistogramSeries]),
+    -- | Whether horizontal divider lines should be displayed between items in each column.
+    showItemDividers :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'HistogramChartSpec' with the minimum fields required to make a request.
+newHistogramChartSpec ::
+  HistogramChartSpec
+newHistogramChartSpec =
+  HistogramChartSpec
+    { bucketSize = Core.Nothing,
+      legendPosition = Core.Nothing,
+      outlierPercentile = Core.Nothing,
+      series = Core.Nothing,
+      showItemDividers = Core.Nothing
+    }
+
+instance Core.FromJSON HistogramChartSpec where
+  parseJSON =
+    Core.withObject
+      "HistogramChartSpec"
+      ( \o ->
+          HistogramChartSpec
+            Core.<$> (o Core..:? "bucketSize")
+            Core.<*> (o Core..:? "legendPosition")
+            Core.<*> (o Core..:? "outlierPercentile")
+            Core.<*> (o Core..:? "series")
+            Core.<*> (o Core..:? "showItemDividers")
+      )
+
+instance Core.ToJSON HistogramChartSpec where
+  toJSON HistogramChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bucketSize" Core..=) Core.<$> bucketSize,
+            ("legendPosition" Core..=) Core.<$> legendPosition,
+            ("outlierPercentile" Core..=) Core.<$> outlierPercentile,
+            ("series" Core..=) Core.<$> series,
+            ("showItemDividers" Core..=) Core.<$> showItemDividers
+          ]
+      )
+
+-- | 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:/ 'newHistogramRule' smart constructor.
+data HistogramRule = HistogramRule
+  { -- | 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.
+    end :: (Core.Maybe Core.Double),
+    -- | The size of the buckets that are created. Must be positive.
+    interval :: (Core.Maybe Core.Double),
+    -- | 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.
+    start :: (Core.Maybe Core.Double)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'HistogramRule' with the minimum fields required to make a request.
+newHistogramRule ::
+  HistogramRule
+newHistogramRule =
+  HistogramRule
+    { end = Core.Nothing,
+      interval = Core.Nothing,
+      start = Core.Nothing
+    }
+
+instance Core.FromJSON HistogramRule where
+  parseJSON =
+    Core.withObject
+      "HistogramRule"
+      ( \o ->
+          HistogramRule
+            Core.<$> (o Core..:? "end")
+            Core.<*> (o Core..:? "interval")
+            Core.<*> (o Core..:? "start")
+      )
+
+instance Core.ToJSON HistogramRule where
+  toJSON HistogramRule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("end" Core..=) Core.<$> end,
+            ("interval" Core..=) Core.<$> interval,
+            ("start" Core..=) Core.<$> start
+          ]
+      )
+
+-- | A histogram series containing the series color and data.
+--
+-- /See:/ 'newHistogramSeries' smart constructor.
+data HistogramSeries = HistogramSeries
+  { -- | The color of the column representing this series in each bucket. This field is optional. Deprecated: Use bar/color/style.
+    barColor :: (Core.Maybe Color),
+    -- | The color of the column representing this series in each bucket. This field is optional. If bar_color is also set, this field takes precedence.
+    barColorStyle :: (Core.Maybe ColorStyle),
+    -- | The data for this histogram series.
+    data' :: (Core.Maybe ChartData)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'HistogramSeries' with the minimum fields required to make a request.
+newHistogramSeries ::
+  HistogramSeries
+newHistogramSeries =
+  HistogramSeries
+    { barColor = Core.Nothing,
+      barColorStyle = Core.Nothing,
+      data' = Core.Nothing
+    }
+
+instance Core.FromJSON HistogramSeries where
+  parseJSON =
+    Core.withObject
+      "HistogramSeries"
+      ( \o ->
+          HistogramSeries
+            Core.<$> (o Core..:? "barColor")
+            Core.<*> (o Core..:? "barColorStyle")
+            Core.<*> (o Core..:? "data")
+      )
+
+instance Core.ToJSON HistogramSeries where
+  toJSON HistogramSeries {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("barColor" Core..=) Core.<$> barColor,
+            ("barColorStyle" Core..=) Core.<$> barColorStyle,
+            ("data" Core..=) Core.<$> data'
+          ]
+      )
+
+-- | Inserts rows or columns in a sheet at a particular index.
+--
+-- /See:/ 'newInsertDimensionRequest' smart constructor.
+data InsertDimensionRequest = InsertDimensionRequest
+  { -- | 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).
+    inheritFromBefore :: (Core.Maybe Core.Bool),
+    -- | The dimensions to insert. Both the start and end indexes must be bounded.
+    range :: (Core.Maybe DimensionRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InsertDimensionRequest' with the minimum fields required to make a request.
+newInsertDimensionRequest ::
+  InsertDimensionRequest
+newInsertDimensionRequest =
+  InsertDimensionRequest
+    { inheritFromBefore = Core.Nothing,
+      range = Core.Nothing
+    }
+
+instance Core.FromJSON InsertDimensionRequest where
+  parseJSON =
+    Core.withObject
+      "InsertDimensionRequest"
+      ( \o ->
+          InsertDimensionRequest
+            Core.<$> (o Core..:? "inheritFromBefore")
+            Core.<*> (o Core..:? "range")
+      )
+
+instance Core.ToJSON InsertDimensionRequest where
+  toJSON InsertDimensionRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("inheritFromBefore" Core..=) Core.<$> inheritFromBefore,
+            ("range" Core..=) Core.<$> range
+          ]
+      )
+
+-- | Inserts cells into a range, shifting the existing cells over or down.
+--
+-- /See:/ 'newInsertRangeRequest' smart constructor.
+data InsertRangeRequest = InsertRangeRequest
+  { -- | The range to insert new cells into. The range is constrained to the current sheet boundaries.
+    range :: (Core.Maybe GridRange),
+    -- | 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.
+    shiftDimension :: (Core.Maybe InsertRangeRequest_ShiftDimension)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InsertRangeRequest' with the minimum fields required to make a request.
+newInsertRangeRequest ::
+  InsertRangeRequest
+newInsertRangeRequest =
+  InsertRangeRequest
+    { range = Core.Nothing,
+      shiftDimension = Core.Nothing
+    }
+
+instance Core.FromJSON InsertRangeRequest where
+  parseJSON =
+    Core.withObject
+      "InsertRangeRequest"
+      ( \o ->
+          InsertRangeRequest
+            Core.<$> (o Core..:? "range")
+            Core.<*> (o Core..:? "shiftDimension")
+      )
+
+instance Core.ToJSON InsertRangeRequest where
+  toJSON InsertRangeRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("range" Core..=) Core.<$> range,
+            ("shiftDimension" Core..=) Core.<$> shiftDimension
+          ]
+      )
+
+-- | A single interpolation point on a gradient conditional format. These pin the gradient color scale according to the color, type and value chosen.
+--
+-- /See:/ 'newInterpolationPoint' smart constructor.
+data InterpolationPoint = InterpolationPoint
+  { -- | The color this interpolation point should use. Deprecated: Use color_style.
+    color :: (Core.Maybe Color),
+    -- | The color this interpolation point should use. If color is also set, this field takes precedence.
+    colorStyle :: (Core.Maybe ColorStyle),
+    -- | How the value should be interpreted.
+    type' :: (Core.Maybe InterpolationPoint_Type),
+    -- | The value this interpolation point uses. May be a formula. Unused if type is MIN or MAX.
+    value :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'InterpolationPoint' with the minimum fields required to make a request.
+newInterpolationPoint ::
+  InterpolationPoint
+newInterpolationPoint =
+  InterpolationPoint
+    { color = Core.Nothing,
+      colorStyle = Core.Nothing,
+      type' = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON InterpolationPoint where
+  parseJSON =
+    Core.withObject
+      "InterpolationPoint"
+      ( \o ->
+          InterpolationPoint
+            Core.<$> (o Core..:? "color")
+            Core.<*> (o Core..:? "colorStyle")
+            Core.<*> (o Core..:? "type")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON InterpolationPoint where
+  toJSON InterpolationPoint {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("color" Core..=) Core.<$> color,
+            ("colorStyle" Core..=) Core.<$> colorStyle,
+            ("type" Core..=) Core.<$> type',
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time.
+--
+-- /See:/ 'newInterval' smart constructor.
+data Interval = Interval
+  { -- | Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end.
+    endTime :: (Core.Maybe Core.DateTime),
+    -- | Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start.
+    startTime :: (Core.Maybe Core.DateTime)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Interval' with the minimum fields required to make a request.
+newInterval ::
+  Interval
+newInterval =
+  Interval {endTime = Core.Nothing, startTime = Core.Nothing}
+
+instance Core.FromJSON Interval where
+  parseJSON =
+    Core.withObject
+      "Interval"
+      ( \o ->
+          Interval
+            Core.<$> (o Core..:? "endTime")
+            Core.<*> (o Core..:? "startTime")
+      )
+
+instance Core.ToJSON Interval where
+  toJSON Interval {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("endTime" Core..=) Core.<$> endTime,
+            ("startTime" Core..=) Core.<$> startTime
+          ]
+      )
+
+-- | Settings to control how circular dependencies are resolved with iterative calculation.
+--
+-- /See:/ 'newIterativeCalculationSettings' smart constructor.
+data IterativeCalculationSettings = IterativeCalculationSettings
+  { -- | When iterative calculation is enabled and successive results differ by less than this threshold value, the calculation rounds stop.
+    convergenceThreshold :: (Core.Maybe Core.Double),
+    -- | When iterative calculation is enabled, the maximum number of calculation rounds to perform.
+    maxIterations :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'IterativeCalculationSettings' with the minimum fields required to make a request.
+newIterativeCalculationSettings ::
+  IterativeCalculationSettings
+newIterativeCalculationSettings =
+  IterativeCalculationSettings
+    { convergenceThreshold = Core.Nothing,
+      maxIterations = Core.Nothing
+    }
+
+instance Core.FromJSON IterativeCalculationSettings where
+  parseJSON =
+    Core.withObject
+      "IterativeCalculationSettings"
+      ( \o ->
+          IterativeCalculationSettings
+            Core.<$> (o Core..:? "convergenceThreshold")
+            Core.<*> (o Core..:? "maxIterations")
+      )
+
+instance Core.ToJSON IterativeCalculationSettings where
+  toJSON IterativeCalculationSettings {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("convergenceThreshold" Core..=) Core.<$> convergenceThreshold,
+            ("maxIterations" Core..=) Core.<$> maxIterations
+          ]
+      )
+
+-- | Formatting options for key value.
+--
+-- /See:/ 'newKeyValueFormat' smart constructor.
+data KeyValueFormat = KeyValueFormat
+  { -- | Specifies the horizontal text positioning of key value. This field is optional. If not specified, default positioning is used.
+    position :: (Core.Maybe TextPosition),
+    -- | Text formatting options for key value. The link field is not supported.
+    textFormat :: (Core.Maybe TextFormat)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'KeyValueFormat' with the minimum fields required to make a request.
+newKeyValueFormat ::
+  KeyValueFormat
+newKeyValueFormat =
+  KeyValueFormat
+    { position = Core.Nothing,
+      textFormat = Core.Nothing
+    }
+
+instance Core.FromJSON KeyValueFormat where
+  parseJSON =
+    Core.withObject
+      "KeyValueFormat"
+      ( \o ->
+          KeyValueFormat
+            Core.<$> (o Core..:? "position")
+            Core.<*> (o Core..:? "textFormat")
+      )
+
+instance Core.ToJSON KeyValueFormat where
+  toJSON KeyValueFormat {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("position" Core..=) Core.<$> position,
+            ("textFormat" Core..=) Core.<$> textFormat
+          ]
+      )
+
+-- | Properties that describe the style of a line.
+--
+-- /See:/ 'newLineStyle' smart constructor.
+data LineStyle = LineStyle
+  { -- | The dash type of the line.
+    type' :: (Core.Maybe LineStyle_Type),
+    -- | The thickness of the line, in px.
+    width :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'LineStyle' with the minimum fields required to make a request.
+newLineStyle ::
+  LineStyle
+newLineStyle =
+  LineStyle {type' = Core.Nothing, width = Core.Nothing}
+
+instance Core.FromJSON LineStyle where
+  parseJSON =
+    Core.withObject
+      "LineStyle"
+      ( \o ->
+          LineStyle
+            Core.<$> (o Core..:? "type")
+            Core.<*> (o Core..:? "width")
+      )
+
+instance Core.ToJSON LineStyle where
+  toJSON LineStyle {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("type" Core..=) Core.<$> type',
+            ("width" Core..=) Core.<$> width
+          ]
+      )
+
+-- | An external or local reference.
+--
+-- /See:/ 'newLink' smart constructor.
+newtype Link = Link
+  { -- | The link identifier.
+    uri :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Link' with the minimum fields required to make a request.
+newLink ::
+  Link
+newLink = Link {uri = Core.Nothing}
+
+instance Core.FromJSON Link where
+  parseJSON =
+    Core.withObject "Link" (\o -> Link Core.<$> (o Core..:? "uri"))
+
+instance Core.ToJSON Link where
+  toJSON Link {..} =
+    Core.object (Core.catMaybes [("uri" Core..=) Core.<$> uri])
+
+-- | The specification of a Looker data source.
+--
+-- /See:/ 'newLookerDataSourceSpec' smart constructor.
+data LookerDataSourceSpec = LookerDataSourceSpec
+  { -- | Name of a Looker model explore.
+    explore :: (Core.Maybe Core.Text),
+    -- | A Looker instance URL.
+    instanceUri :: (Core.Maybe Core.Text),
+    -- | Name of a Looker model.
+    model :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'LookerDataSourceSpec' with the minimum fields required to make a request.
+newLookerDataSourceSpec ::
+  LookerDataSourceSpec
+newLookerDataSourceSpec =
+  LookerDataSourceSpec
+    { explore = Core.Nothing,
+      instanceUri = Core.Nothing,
+      model = Core.Nothing
+    }
+
+instance Core.FromJSON LookerDataSourceSpec where
+  parseJSON =
+    Core.withObject
+      "LookerDataSourceSpec"
+      ( \o ->
+          LookerDataSourceSpec
+            Core.<$> (o Core..:? "explore")
+            Core.<*> (o Core..:? "instanceUri")
+            Core.<*> (o Core..:? "model")
+      )
+
+instance Core.ToJSON LookerDataSourceSpec where
+  toJSON LookerDataSourceSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("explore" Core..=) Core.<$> explore,
+            ("instanceUri" Core..=) Core.<$> instanceUri,
+            ("model" Core..=) Core.<$> model
+          ]
+      )
+
+-- | 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:/ 'newManualRule' smart constructor.
+newtype ManualRule = ManualRule
+  { -- | The list of group names and the corresponding items from the source data that map to each group name.
+    groups :: (Core.Maybe [ManualRuleGroup])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ManualRule' with the minimum fields required to make a request.
+newManualRule ::
+  ManualRule
+newManualRule = ManualRule {groups = Core.Nothing}
+
+instance Core.FromJSON ManualRule where
+  parseJSON =
+    Core.withObject
+      "ManualRule"
+      (\o -> ManualRule Core.<$> (o Core..:? "groups"))
+
+instance Core.ToJSON ManualRule where
+  toJSON ManualRule {..} =
+    Core.object (Core.catMaybes [("groups" Core..=) Core.<$> groups])
+
+-- | A group name and a list of items from the source data that should be placed in the group with this name.
+--
+-- /See:/ 'newManualRuleGroup' smart constructor.
+data ManualRuleGroup = ManualRuleGroup
+  { -- | The group name, which must be a string. Each group in a given ManualRule must have a unique group name.
+    groupName :: (Core.Maybe ExtendedValue),
+    -- | 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.
+    items :: (Core.Maybe [ExtendedValue])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ManualRuleGroup' with the minimum fields required to make a request.
+newManualRuleGroup ::
+  ManualRuleGroup
+newManualRuleGroup =
+  ManualRuleGroup {groupName = Core.Nothing, items = Core.Nothing}
+
+instance Core.FromJSON ManualRuleGroup where
+  parseJSON =
+    Core.withObject
+      "ManualRuleGroup"
+      ( \o ->
+          ManualRuleGroup
+            Core.<$> (o Core..:? "groupName")
+            Core.<*> (o Core..:? "items")
+      )
+
+instance Core.ToJSON ManualRuleGroup where
+  toJSON ManualRuleGroup {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("groupName" Core..=) Core.<$> groupName,
+            ("items" Core..=) Core.<$> items
+          ]
+      )
+
+-- | A developer metadata entry and the data filters specified in the original request that matched it.
+--
+-- /See:/ 'newMatchedDeveloperMetadata' smart constructor.
+data MatchedDeveloperMetadata = MatchedDeveloperMetadata
+  { -- | All filters matching the returned developer metadata.
+    dataFilters :: (Core.Maybe [DataFilter]),
+    -- | The developer metadata matching the specified filters.
+    developerMetadata :: (Core.Maybe DeveloperMetadata)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'MatchedDeveloperMetadata' with the minimum fields required to make a request.
+newMatchedDeveloperMetadata ::
+  MatchedDeveloperMetadata
+newMatchedDeveloperMetadata =
+  MatchedDeveloperMetadata
+    { dataFilters = Core.Nothing,
+      developerMetadata = Core.Nothing
+    }
+
+instance Core.FromJSON MatchedDeveloperMetadata where
+  parseJSON =
+    Core.withObject
+      "MatchedDeveloperMetadata"
+      ( \o ->
+          MatchedDeveloperMetadata
+            Core.<$> (o Core..:? "dataFilters")
+            Core.<*> (o Core..:? "developerMetadata")
+      )
+
+instance Core.ToJSON MatchedDeveloperMetadata where
+  toJSON MatchedDeveloperMetadata {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataFilters" Core..=) Core.<$> dataFilters,
+            ("developerMetadata" Core..=) Core.<$> developerMetadata
+          ]
+      )
+
+-- | A value range that was matched by one or more data filers.
+--
+-- /See:/ 'newMatchedValueRange' smart constructor.
+data MatchedValueRange = MatchedValueRange
+  { -- | The DataFilters from the request that matched the range of values.
+    dataFilters :: (Core.Maybe [DataFilter]),
+    -- | The values matched by the DataFilter.
+    valueRange :: (Core.Maybe ValueRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'MatchedValueRange' with the minimum fields required to make a request.
+newMatchedValueRange ::
+  MatchedValueRange
+newMatchedValueRange =
+  MatchedValueRange
+    { dataFilters = Core.Nothing,
+      valueRange = Core.Nothing
+    }
+
+instance Core.FromJSON MatchedValueRange where
+  parseJSON =
+    Core.withObject
+      "MatchedValueRange"
+      ( \o ->
+          MatchedValueRange
+            Core.<$> (o Core..:? "dataFilters")
+            Core.<*> (o Core..:? "valueRange")
+      )
+
+instance Core.ToJSON MatchedValueRange where
+  toJSON MatchedValueRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataFilters" Core..=) Core.<$> dataFilters,
+            ("valueRange" Core..=) Core.<$> valueRange
+          ]
+      )
+
+-- | Merges all cells in the range.
+--
+-- /See:/ 'newMergeCellsRequest' smart constructor.
+data MergeCellsRequest = MergeCellsRequest
+  { -- | How the cells should be merged.
+    mergeType :: (Core.Maybe MergeCellsRequest_MergeType),
+    -- | The range of cells to merge.
+    range :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'MergeCellsRequest' with the minimum fields required to make a request.
+newMergeCellsRequest ::
+  MergeCellsRequest
+newMergeCellsRequest =
+  MergeCellsRequest {mergeType = Core.Nothing, range = Core.Nothing}
+
+instance Core.FromJSON MergeCellsRequest where
+  parseJSON =
+    Core.withObject
+      "MergeCellsRequest"
+      ( \o ->
+          MergeCellsRequest
+            Core.<$> (o Core..:? "mergeType")
+            Core.<*> (o Core..:? "range")
+      )
+
+instance Core.ToJSON MergeCellsRequest where
+  toJSON MergeCellsRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("mergeType" Core..=) Core.<$> mergeType,
+            ("range" Core..=) Core.<$> range
+          ]
+      )
+
+-- | Moves one or more rows or columns.
+--
+-- /See:/ 'newMoveDimensionRequest' smart constructor.
+data MoveDimensionRequest = MoveDimensionRequest
+  { -- | 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@.
+    destinationIndex :: (Core.Maybe Core.Int32),
+    -- | The source dimensions to move.
+    source :: (Core.Maybe DimensionRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'MoveDimensionRequest' with the minimum fields required to make a request.
+newMoveDimensionRequest ::
+  MoveDimensionRequest
+newMoveDimensionRequest =
+  MoveDimensionRequest
+    { destinationIndex = Core.Nothing,
+      source = Core.Nothing
+    }
+
+instance Core.FromJSON MoveDimensionRequest where
+  parseJSON =
+    Core.withObject
+      "MoveDimensionRequest"
+      ( \o ->
+          MoveDimensionRequest
+            Core.<$> (o Core..:? "destinationIndex")
+            Core.<*> (o Core..:? "source")
+      )
+
+instance Core.ToJSON MoveDimensionRequest where
+  toJSON MoveDimensionRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("destinationIndex" Core..=) Core.<$> destinationIndex,
+            ("source" Core..=) Core.<$> source
+          ]
+      )
+
+-- | A named range.
+--
+-- /See:/ 'newNamedRange' smart constructor.
+data NamedRange = NamedRange
+  { -- | The name of the named range.
+    name :: (Core.Maybe Core.Text),
+    -- | The ID of the named range.
+    namedRangeId :: (Core.Maybe Core.Text),
+    -- | The range this represents.
+    range :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'NamedRange' with the minimum fields required to make a request.
+newNamedRange ::
+  NamedRange
+newNamedRange =
+  NamedRange
+    { name = Core.Nothing,
+      namedRangeId = Core.Nothing,
+      range = Core.Nothing
+    }
+
+instance Core.FromJSON NamedRange where
+  parseJSON =
+    Core.withObject
+      "NamedRange"
+      ( \o ->
+          NamedRange
+            Core.<$> (o Core..:? "name")
+            Core.<*> (o Core..:? "namedRangeId")
+            Core.<*> (o Core..:? "range")
+      )
+
+instance Core.ToJSON NamedRange where
+  toJSON NamedRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("name" Core..=) Core.<$> name,
+            ("namedRangeId" Core..=) Core.<$> namedRangeId,
+            ("range" Core..=) Core.<$> range
+          ]
+      )
+
+-- | The number format of a cell.
+--
+-- /See:/ 'newNumberFormat' smart constructor.
+data NumberFormat = NumberFormat
+  { -- | 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 </sheets/api/guides/formats Date and Number Formats guide> for more information about the supported patterns.
+    pattern' :: (Core.Maybe Core.Text),
+    -- | The type of the number format. When writing, this field must be set.
+    type' :: (Core.Maybe NumberFormat_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'NumberFormat' with the minimum fields required to make a request.
+newNumberFormat ::
+  NumberFormat
+newNumberFormat =
+  NumberFormat {pattern' = Core.Nothing, type' = Core.Nothing}
+
+instance Core.FromJSON NumberFormat where
+  parseJSON =
+    Core.withObject
+      "NumberFormat"
+      ( \o ->
+          NumberFormat
+            Core.<$> (o Core..:? "pattern")
+            Core.<*> (o Core..:? "type")
+      )
+
+instance Core.ToJSON NumberFormat where
+  toJSON NumberFormat {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("pattern" Core..=) Core.<$> pattern',
+            ("type" Core..=) Core.<$> type'
+          ]
+      )
+
+-- | An 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:/ 'newOrgChartSpec' smart constructor.
+data OrgChartSpec = OrgChartSpec
+  { -- | The data containing the labels for all the nodes in the chart. Labels must be unique.
+    labels :: (Core.Maybe ChartData),
+    -- | The color of the org chart nodes. Deprecated: Use node/color/style.
+    nodeColor :: (Core.Maybe Color),
+    -- | The color of the org chart nodes. If node_color is also set, this field takes precedence.
+    nodeColorStyle :: (Core.Maybe ColorStyle),
+    -- | The size of the org chart nodes.
+    nodeSize :: (Core.Maybe OrgChartSpec_NodeSize),
+    -- | 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.
+    parentLabels :: (Core.Maybe ChartData),
+    -- | The color of the selected org chart nodes. Deprecated: Use selected/node/color_style.
+    selectedNodeColor :: (Core.Maybe Color),
+    -- | The color of the selected org chart nodes. If selected/node/color is also set, this field takes precedence.
+    selectedNodeColorStyle :: (Core.Maybe ColorStyle),
+    -- | 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.
+    tooltips :: (Core.Maybe ChartData)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OrgChartSpec' with the minimum fields required to make a request.
+newOrgChartSpec ::
+  OrgChartSpec
+newOrgChartSpec =
+  OrgChartSpec
+    { labels = Core.Nothing,
+      nodeColor = Core.Nothing,
+      nodeColorStyle = Core.Nothing,
+      nodeSize = Core.Nothing,
+      parentLabels = Core.Nothing,
+      selectedNodeColor = Core.Nothing,
+      selectedNodeColorStyle = Core.Nothing,
+      tooltips = Core.Nothing
+    }
+
+instance Core.FromJSON OrgChartSpec where
+  parseJSON =
+    Core.withObject
+      "OrgChartSpec"
+      ( \o ->
+          OrgChartSpec
+            Core.<$> (o Core..:? "labels")
+            Core.<*> (o Core..:? "nodeColor")
+            Core.<*> (o Core..:? "nodeColorStyle")
+            Core.<*> (o Core..:? "nodeSize")
+            Core.<*> (o Core..:? "parentLabels")
+            Core.<*> (o Core..:? "selectedNodeColor")
+            Core.<*> (o Core..:? "selectedNodeColorStyle")
+            Core.<*> (o Core..:? "tooltips")
+      )
+
+instance Core.ToJSON OrgChartSpec where
+  toJSON OrgChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("labels" Core..=) Core.<$> labels,
+            ("nodeColor" Core..=) Core.<$> nodeColor,
+            ("nodeColorStyle" Core..=) Core.<$> nodeColorStyle,
+            ("nodeSize" Core..=) Core.<$> nodeSize,
+            ("parentLabels" Core..=) Core.<$> parentLabels,
+            ("selectedNodeColor" Core..=) Core.<$> selectedNodeColor,
+            ("selectedNodeColorStyle" Core..=) Core.<$> selectedNodeColorStyle,
+            ("tooltips" Core..=) Core.<$> tooltips
+          ]
+      )
+
+-- | The location an object is overlaid on top of a grid.
+--
+-- /See:/ 'newOverlayPosition' smart constructor.
+data OverlayPosition = OverlayPosition
+  { -- | The cell the object is anchored to.
+    anchorCell :: (Core.Maybe GridCoordinate),
+    -- | The height of the object, in pixels. Defaults to 371.
+    heightPixels :: (Core.Maybe Core.Int32),
+    -- | The horizontal offset, in pixels, that the object is offset from the anchor cell.
+    offsetXPixels :: (Core.Maybe Core.Int32),
+    -- | The vertical offset, in pixels, that the object is offset from the anchor cell.
+    offsetYPixels :: (Core.Maybe Core.Int32),
+    -- | The width of the object, in pixels. Defaults to 600.
+    widthPixels :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'OverlayPosition' with the minimum fields required to make a request.
+newOverlayPosition ::
+  OverlayPosition
+newOverlayPosition =
+  OverlayPosition
+    { anchorCell = Core.Nothing,
+      heightPixels = Core.Nothing,
+      offsetXPixels = Core.Nothing,
+      offsetYPixels = Core.Nothing,
+      widthPixels = Core.Nothing
+    }
+
+instance Core.FromJSON OverlayPosition where
+  parseJSON =
+    Core.withObject
+      "OverlayPosition"
+      ( \o ->
+          OverlayPosition
+            Core.<$> (o Core..:? "anchorCell")
+            Core.<*> (o Core..:? "heightPixels")
+            Core.<*> (o Core..:? "offsetXPixels")
+            Core.<*> (o Core..:? "offsetYPixels")
+            Core.<*> (o Core..:? "widthPixels")
+      )
+
+instance Core.ToJSON OverlayPosition where
+  toJSON OverlayPosition {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("anchorCell" Core..=) Core.<$> anchorCell,
+            ("heightPixels" Core..=) Core.<$> heightPixels,
+            ("offsetXPixels" Core..=) Core.<$> offsetXPixels,
+            ("offsetYPixels" Core..=) Core.<$> offsetYPixels,
+            ("widthPixels" Core..=) Core.<$> widthPixels
+          ]
+      )
+
+-- | The amount of padding around the cell, in pixels. When updating padding, every field must be specified.
+--
+-- /See:/ 'newPadding' smart constructor.
+data Padding = Padding
+  { -- | The bottom padding of the cell.
+    bottom :: (Core.Maybe Core.Int32),
+    -- | The left padding of the cell.
+    left :: (Core.Maybe Core.Int32),
+    -- | The right padding of the cell.
+    right :: (Core.Maybe Core.Int32),
+    -- | The top padding of the cell.
+    top :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Padding' with the minimum fields required to make a request.
+newPadding ::
+  Padding
+newPadding =
+  Padding
+    { bottom = Core.Nothing,
+      left = Core.Nothing,
+      right = Core.Nothing,
+      top = Core.Nothing
+    }
+
+instance Core.FromJSON Padding where
+  parseJSON =
+    Core.withObject
+      "Padding"
+      ( \o ->
+          Padding
+            Core.<$> (o Core..:? "bottom")
+            Core.<*> (o Core..:? "left")
+            Core.<*> (o Core..:? "right")
+            Core.<*> (o Core..:? "top")
+      )
+
+instance Core.ToJSON Padding where
+  toJSON Padding {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bottom" Core..=) Core.<$> bottom,
+            ("left" Core..=) Core.<$> left,
+            ("right" Core..=) Core.<$> right,
+            ("top" Core..=) Core.<$> top
+          ]
+      )
+
+-- | Inserts data into the spreadsheet starting at the specified coordinate.
+--
+-- /See:/ 'newPasteDataRequest' smart constructor.
+data PasteDataRequest = PasteDataRequest
+  { -- | The coordinate at which the data should start being inserted.
+    coordinate :: (Core.Maybe GridCoordinate),
+    -- | The data to insert.
+    data' :: (Core.Maybe Core.Text),
+    -- | The delimiter in the data.
+    delimiter :: (Core.Maybe Core.Text),
+    -- | True if the data is HTML.
+    html :: (Core.Maybe Core.Bool),
+    -- | How the data should be pasted.
+    type' :: (Core.Maybe PasteDataRequest_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PasteDataRequest' with the minimum fields required to make a request.
+newPasteDataRequest ::
+  PasteDataRequest
+newPasteDataRequest =
+  PasteDataRequest
+    { coordinate = Core.Nothing,
+      data' = Core.Nothing,
+      delimiter = Core.Nothing,
+      html = Core.Nothing,
+      type' = Core.Nothing
+    }
+
+instance Core.FromJSON PasteDataRequest where
+  parseJSON =
+    Core.withObject
+      "PasteDataRequest"
+      ( \o ->
+          PasteDataRequest
+            Core.<$> (o Core..:? "coordinate")
+            Core.<*> (o Core..:? "data")
+            Core.<*> (o Core..:? "delimiter")
+            Core.<*> (o Core..:? "html")
+            Core.<*> (o Core..:? "type")
+      )
+
+instance Core.ToJSON PasteDataRequest where
+  toJSON PasteDataRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("coordinate" Core..=) Core.<$> coordinate,
+            ("data" Core..=) Core.<$> data',
+            ("delimiter" Core..=) Core.<$> delimiter,
+            ("html" Core..=) Core.<$> html,
+            ("type" Core..=) Core.<$> type'
+          ]
+      )
+
+-- | A pie chart.
+--
+-- /See:/ 'newPieChartSpec' smart constructor.
+data PieChartSpec = PieChartSpec
+  { -- | The data that covers the domain of the pie chart.
+    domain :: (Core.Maybe ChartData),
+    -- | Where the legend of the pie chart should be drawn.
+    legendPosition :: (Core.Maybe PieChartSpec_LegendPosition),
+    -- | The size of the hole in the pie chart.
+    pieHole :: (Core.Maybe Core.Double),
+    -- | The data that covers the one and only series of the pie chart.
+    series :: (Core.Maybe ChartData),
+    -- | True if the pie is three dimensional.
+    threeDimensional :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PieChartSpec' with the minimum fields required to make a request.
+newPieChartSpec ::
+  PieChartSpec
+newPieChartSpec =
+  PieChartSpec
+    { domain = Core.Nothing,
+      legendPosition = Core.Nothing,
+      pieHole = Core.Nothing,
+      series = Core.Nothing,
+      threeDimensional = Core.Nothing
+    }
+
+instance Core.FromJSON PieChartSpec where
+  parseJSON =
+    Core.withObject
+      "PieChartSpec"
+      ( \o ->
+          PieChartSpec
+            Core.<$> (o Core..:? "domain")
+            Core.<*> (o Core..:? "legendPosition")
+            Core.<*> (o Core..:? "pieHole")
+            Core.<*> (o Core..:? "series")
+            Core.<*> (o Core..:? "threeDimensional")
+      )
+
+instance Core.ToJSON PieChartSpec where
+  toJSON PieChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("domain" Core..=) Core.<$> domain,
+            ("legendPosition" Core..=) Core.<$> legendPosition,
+            ("pieHole" Core..=) Core.<$> pieHole,
+            ("series" Core..=) Core.<$> series,
+            ("threeDimensional" Core..=) Core.<$> threeDimensional
+          ]
+      )
+
+-- | Criteria for showing\/hiding rows in a pivot table.
+--
+-- /See:/ 'newPivotFilterCriteria' smart constructor.
+data PivotFilterCriteria = PivotFilterCriteria
+  { -- | A condition that must be true for values to be shown. (@visibleValues@ does not override this -- even if a value is listed there, it is still hidden if it does not meet the condition.) Condition values that refer to ranges in A1-notation are evaluated relative to the pivot table sheet. References are treated absolutely, so are not filled down the pivot table. For example, a condition value of @=A1@ on \"Pivot Table 1\" is treated as @\'Pivot Table 1\'!$A$1@. The source data of the pivot table can be referenced by column header name. For example, if the source data has columns named \"Revenue\" and \"Cost\" and a condition is applied to the \"Revenue\" column with type @NUMBER_GREATER@ and value @=Cost@, then only columns where \"Revenue\" > \"Cost\" are included.
+    condition :: (Core.Maybe BooleanCondition),
+    -- | Whether values are visible by default. If true, the visible/values are ignored, all values that meet condition (if specified) are shown. If false, values that are both in visible/values and meet condition are shown.
+    visibleByDefault :: (Core.Maybe Core.Bool),
+    -- | Values that should be included. Values not listed here are excluded.
+    visibleValues :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotFilterCriteria' with the minimum fields required to make a request.
+newPivotFilterCriteria ::
+  PivotFilterCriteria
+newPivotFilterCriteria =
+  PivotFilterCriteria
+    { condition = Core.Nothing,
+      visibleByDefault = Core.Nothing,
+      visibleValues = Core.Nothing
+    }
+
+instance Core.FromJSON PivotFilterCriteria where
+  parseJSON =
+    Core.withObject
+      "PivotFilterCriteria"
+      ( \o ->
+          PivotFilterCriteria
+            Core.<$> (o Core..:? "condition")
+            Core.<*> (o Core..:? "visibleByDefault")
+            Core.<*> (o Core..:? "visibleValues")
+      )
+
+instance Core.ToJSON PivotFilterCriteria where
+  toJSON PivotFilterCriteria {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("condition" Core..=) Core.<$> condition,
+            ("visibleByDefault" Core..=) Core.<$> visibleByDefault,
+            ("visibleValues" Core..=) Core.<$> visibleValues
+          ]
+      )
+
+-- | The pivot table filter criteria associated with a specific source column offset.
+--
+-- /See:/ 'newPivotFilterSpec' smart constructor.
+data PivotFilterSpec = PivotFilterSpec
+  { -- | The zero-based column offset of the source range.
+    columnOffsetIndex :: (Core.Maybe Core.Int32),
+    -- | The reference to the data source column.
+    dataSourceColumnReference :: (Core.Maybe DataSourceColumnReference),
+    -- | The criteria for the column.
+    filterCriteria :: (Core.Maybe PivotFilterCriteria)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotFilterSpec' with the minimum fields required to make a request.
+newPivotFilterSpec ::
+  PivotFilterSpec
+newPivotFilterSpec =
+  PivotFilterSpec
+    { columnOffsetIndex = Core.Nothing,
+      dataSourceColumnReference = Core.Nothing,
+      filterCriteria = Core.Nothing
+    }
+
+instance Core.FromJSON PivotFilterSpec where
+  parseJSON =
+    Core.withObject
+      "PivotFilterSpec"
+      ( \o ->
+          PivotFilterSpec
+            Core.<$> (o Core..:? "columnOffsetIndex")
+            Core.<*> (o Core..:? "dataSourceColumnReference")
+            Core.<*> (o Core..:? "filterCriteria")
+      )
+
+instance Core.ToJSON PivotFilterSpec where
+  toJSON PivotFilterSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("columnOffsetIndex" Core..=) Core.<$> columnOffsetIndex,
+            ("dataSourceColumnReference" Core..=)
+              Core.<$> dataSourceColumnReference,
+            ("filterCriteria" Core..=) Core.<$> filterCriteria
+          ]
+      )
+
+-- | A single grouping (either row or column) in a pivot table.
+--
+-- /See:/ 'newPivotGroup' smart constructor.
+data PivotGroup = PivotGroup
+  { -- | The reference to the data source column this grouping is based on.
+    dataSourceColumnReference :: (Core.Maybe DataSourceColumnReference),
+    -- | The count limit on rows or columns to apply to this pivot group.
+    groupLimit :: (Core.Maybe PivotGroupLimit),
+    -- | The group rule to apply to this row\/column group.
+    groupRule :: (Core.Maybe PivotGroupRule),
+    -- | 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 | +--------------+---------+-------+
+    label :: (Core.Maybe Core.Text),
+    -- | 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 repetition 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 | +--------------+
+    repeatHeadings :: (Core.Maybe Core.Bool),
+    -- | True if the pivot table should include the totals for this grouping.
+    showTotals :: (Core.Maybe Core.Bool),
+    -- | The order the values in this group should be sorted.
+    sortOrder :: (Core.Maybe PivotGroup_SortOrder),
+    -- | 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@.
+    sourceColumnOffset :: (Core.Maybe Core.Int32),
+    -- | The bucket of the opposite pivot group to sort by. If not specified, sorting is alphabetical by this group\'s values.
+    valueBucket :: (Core.Maybe PivotGroupSortValueBucket),
+    -- | Metadata about values in the grouping.
+    valueMetadata :: (Core.Maybe [PivotGroupValueMetadata])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotGroup' with the minimum fields required to make a request.
+newPivotGroup ::
+  PivotGroup
+newPivotGroup =
+  PivotGroup
+    { dataSourceColumnReference = Core.Nothing,
+      groupLimit = Core.Nothing,
+      groupRule = Core.Nothing,
+      label = Core.Nothing,
+      repeatHeadings = Core.Nothing,
+      showTotals = Core.Nothing,
+      sortOrder = Core.Nothing,
+      sourceColumnOffset = Core.Nothing,
+      valueBucket = Core.Nothing,
+      valueMetadata = Core.Nothing
+    }
+
+instance Core.FromJSON PivotGroup where
+  parseJSON =
+    Core.withObject
+      "PivotGroup"
+      ( \o ->
+          PivotGroup
+            Core.<$> (o Core..:? "dataSourceColumnReference")
+            Core.<*> (o Core..:? "groupLimit")
+            Core.<*> (o Core..:? "groupRule")
+            Core.<*> (o Core..:? "label")
+            Core.<*> (o Core..:? "repeatHeadings")
+            Core.<*> (o Core..:? "showTotals")
+            Core.<*> (o Core..:? "sortOrder")
+            Core.<*> (o Core..:? "sourceColumnOffset")
+            Core.<*> (o Core..:? "valueBucket")
+            Core.<*> (o Core..:? "valueMetadata")
+      )
+
+instance Core.ToJSON PivotGroup where
+  toJSON PivotGroup {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceColumnReference" Core..=)
+              Core.<$> dataSourceColumnReference,
+            ("groupLimit" Core..=) Core.<$> groupLimit,
+            ("groupRule" Core..=) Core.<$> groupRule,
+            ("label" Core..=) Core.<$> label,
+            ("repeatHeadings" Core..=) Core.<$> repeatHeadings,
+            ("showTotals" Core..=) Core.<$> showTotals,
+            ("sortOrder" Core..=) Core.<$> sortOrder,
+            ("sourceColumnOffset" Core..=) Core.<$> sourceColumnOffset,
+            ("valueBucket" Core..=) Core.<$> valueBucket,
+            ("valueMetadata" Core..=) Core.<$> valueMetadata
+          ]
+      )
+
+-- | The count limit on rows or columns in the pivot group.
+--
+-- /See:/ 'newPivotGroupLimit' smart constructor.
+data PivotGroupLimit = PivotGroupLimit
+  { -- | The order in which the group limit is applied to the pivot table. Pivot group limits are applied from lower to higher order number. Order numbers are normalized to consecutive integers from 0. For write request, to fully customize the applying orders, all pivot group limits should have this field set with an unique number. Otherwise, the order is determined by the index in the PivotTable.rows list and then the PivotTable.columns list.
+    applyOrder :: (Core.Maybe Core.Int32),
+    -- | The count limit.
+    countLimit :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotGroupLimit' with the minimum fields required to make a request.
+newPivotGroupLimit ::
+  PivotGroupLimit
+newPivotGroupLimit =
+  PivotGroupLimit
+    { applyOrder = Core.Nothing,
+      countLimit = Core.Nothing
+    }
+
+instance Core.FromJSON PivotGroupLimit where
+  parseJSON =
+    Core.withObject
+      "PivotGroupLimit"
+      ( \o ->
+          PivotGroupLimit
+            Core.<$> (o Core..:? "applyOrder")
+            Core.<*> (o Core..:? "countLimit")
+      )
+
+instance Core.ToJSON PivotGroupLimit where
+  toJSON PivotGroupLimit {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("applyOrder" Core..=) Core.<$> applyOrder,
+            ("countLimit" Core..=) Core.<$> countLimit
+          ]
+      )
+
+-- | 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:/ 'newPivotGroupRule' smart constructor.
+data PivotGroupRule = PivotGroupRule
+  { -- | A DateTimeRule.
+    dateTimeRule :: (Core.Maybe DateTimeRule),
+    -- | A HistogramRule.
+    histogramRule :: (Core.Maybe HistogramRule),
+    -- | A ManualRule.
+    manualRule :: (Core.Maybe ManualRule)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotGroupRule' with the minimum fields required to make a request.
+newPivotGroupRule ::
+  PivotGroupRule
+newPivotGroupRule =
+  PivotGroupRule
+    { dateTimeRule = Core.Nothing,
+      histogramRule = Core.Nothing,
+      manualRule = Core.Nothing
+    }
+
+instance Core.FromJSON PivotGroupRule where
+  parseJSON =
+    Core.withObject
+      "PivotGroupRule"
+      ( \o ->
+          PivotGroupRule
+            Core.<$> (o Core..:? "dateTimeRule")
+            Core.<*> (o Core..:? "histogramRule")
+            Core.<*> (o Core..:? "manualRule")
+      )
+
+instance Core.ToJSON PivotGroupRule where
+  toJSON PivotGroupRule {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dateTimeRule" Core..=) Core.<$> dateTimeRule,
+            ("histogramRule" Core..=) Core.<$> histogramRule,
+            ("manualRule" Core..=) Core.<$> manualRule
+          ]
+      )
+
+-- | Information about which values in a pivot group should be used for sorting.
+--
+-- /See:/ 'newPivotGroupSortValueBucket' smart constructor.
+data PivotGroupSortValueBucket = PivotGroupSortValueBucket
+  { -- | Determines the bucket from which values are chosen to sort. For example, in a pivot table with one row group & two column groups, the row group can list up to two values. The first value corresponds to a value within the first column group, and the second value corresponds to a value in the second column group. If no values are listed, this would indicate that the row should be sorted according to the \"Grand Total\" over the column groups. If a single value is listed, this would correspond to using the \"Total\" of that bucket.
+    buckets :: (Core.Maybe [ExtendedValue]),
+    -- | The offset in the PivotTable.values list which the values in this grouping should be sorted by.
+    valuesIndex :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotGroupSortValueBucket' with the minimum fields required to make a request.
+newPivotGroupSortValueBucket ::
+  PivotGroupSortValueBucket
+newPivotGroupSortValueBucket =
+  PivotGroupSortValueBucket
+    { buckets = Core.Nothing,
+      valuesIndex = Core.Nothing
+    }
+
+instance Core.FromJSON PivotGroupSortValueBucket where
+  parseJSON =
+    Core.withObject
+      "PivotGroupSortValueBucket"
+      ( \o ->
+          PivotGroupSortValueBucket
+            Core.<$> (o Core..:? "buckets")
+            Core.<*> (o Core..:? "valuesIndex")
+      )
+
+instance Core.ToJSON PivotGroupSortValueBucket where
+  toJSON PivotGroupSortValueBucket {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("buckets" Core..=) Core.<$> buckets,
+            ("valuesIndex" Core..=) Core.<$> valuesIndex
+          ]
+      )
+
+-- | Metadata about a value in a pivot grouping.
+--
+-- /See:/ 'newPivotGroupValueMetadata' smart constructor.
+data PivotGroupValueMetadata = PivotGroupValueMetadata
+  { -- | True if the data corresponding to the value is collapsed.
+    collapsed :: (Core.Maybe Core.Bool),
+    -- | The calculated value the metadata corresponds to. (Note that formulaValue is not valid, because the values will be calculated.)
+    value :: (Core.Maybe ExtendedValue)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotGroupValueMetadata' with the minimum fields required to make a request.
+newPivotGroupValueMetadata ::
+  PivotGroupValueMetadata
+newPivotGroupValueMetadata =
+  PivotGroupValueMetadata
+    { collapsed = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON PivotGroupValueMetadata where
+  parseJSON =
+    Core.withObject
+      "PivotGroupValueMetadata"
+      ( \o ->
+          PivotGroupValueMetadata
+            Core.<$> (o Core..:? "collapsed")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON PivotGroupValueMetadata where
+  toJSON PivotGroupValueMetadata {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("collapsed" Core..=) Core.<$> collapsed,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | A pivot table.
+--
+-- /See:/ 'newPivotTable' smart constructor.
+data PivotTable = PivotTable
+  { -- | Each column grouping in the pivot table.
+    columns :: (Core.Maybe [PivotGroup]),
+    -- | 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@. This field is deprecated in favor of filter_specs.
+    criteria :: (Core.Maybe PivotTable_Criteria),
+    -- | Output only. The data execution status for data source pivot tables.
+    dataExecutionStatus :: (Core.Maybe DataExecutionStatus),
+    -- | The ID of the data source the pivot table is reading data from.
+    dataSourceId :: (Core.Maybe Core.Text),
+    -- | The filters applied to the source columns before aggregating data for the pivot table. Both criteria and filter_specs are populated in responses. If both fields are specified in an update request, this field takes precedence.
+    filterSpecs :: (Core.Maybe [PivotFilterSpec]),
+    -- | Each row grouping in the pivot table.
+    rows :: (Core.Maybe [PivotGroup]),
+    -- | The range the pivot table is reading data from.
+    source :: (Core.Maybe GridRange),
+    -- | Whether values should be listed horizontally (as columns) or vertically (as rows).
+    valueLayout :: (Core.Maybe PivotTable_ValueLayout),
+    -- | A list of values to include in the pivot table.
+    values :: (Core.Maybe [PivotValue])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotTable' with the minimum fields required to make a request.
+newPivotTable ::
+  PivotTable
+newPivotTable =
+  PivotTable
+    { columns = Core.Nothing,
+      criteria = Core.Nothing,
+      dataExecutionStatus = Core.Nothing,
+      dataSourceId = Core.Nothing,
+      filterSpecs = Core.Nothing,
+      rows = Core.Nothing,
+      source = Core.Nothing,
+      valueLayout = Core.Nothing,
+      values = Core.Nothing
+    }
+
+instance Core.FromJSON PivotTable where
+  parseJSON =
+    Core.withObject
+      "PivotTable"
+      ( \o ->
+          PivotTable
+            Core.<$> (o Core..:? "columns")
+            Core.<*> (o Core..:? "criteria")
+            Core.<*> (o Core..:? "dataExecutionStatus")
+            Core.<*> (o Core..:? "dataSourceId")
+            Core.<*> (o Core..:? "filterSpecs")
+            Core.<*> (o Core..:? "rows")
+            Core.<*> (o Core..:? "source")
+            Core.<*> (o Core..:? "valueLayout")
+            Core.<*> (o Core..:? "values")
+      )
+
+instance Core.ToJSON PivotTable where
+  toJSON PivotTable {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("columns" Core..=) Core.<$> columns,
+            ("criteria" Core..=) Core.<$> criteria,
+            ("dataExecutionStatus" Core..=) Core.<$> dataExecutionStatus,
+            ("dataSourceId" Core..=) Core.<$> dataSourceId,
+            ("filterSpecs" Core..=) Core.<$> filterSpecs,
+            ("rows" Core..=) Core.<$> rows,
+            ("source" Core..=) Core.<$> source,
+            ("valueLayout" Core..=) Core.<$> valueLayout,
+            ("values" Core..=) Core.<$> values
+          ]
+      )
+
+-- | 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@. This field is deprecated in favor of filter_specs.
+--
+-- /See:/ 'newPivotTable_Criteria' smart constructor.
+newtype PivotTable_Criteria = PivotTable_Criteria
+  { additional :: (Core.HashMap Core.Text PivotFilterCriteria)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotTable_Criteria' with the minimum fields required to make a request.
+newPivotTable_Criteria ::
+  -- |  See 'additional'.
+  Core.HashMap Core.Text PivotFilterCriteria ->
+  PivotTable_Criteria
+newPivotTable_Criteria additional =
+  PivotTable_Criteria {additional = additional}
+
+instance Core.FromJSON PivotTable_Criteria where
+  parseJSON =
+    Core.withObject
+      "PivotTable_Criteria"
+      (\o -> PivotTable_Criteria Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON PivotTable_Criteria where
+  toJSON PivotTable_Criteria {..} = Core.toJSON additional
+
+-- | The definition of how a value in a pivot table should be calculated.
+--
+-- /See:/ 'newPivotValue' smart constructor.
+data PivotValue = PivotValue
+  { -- | 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 editor, this is referred to as \"Show As\" in the value section of a pivot table.
+    calculatedDisplayType :: (Core.Maybe PivotValue_CalculatedDisplayType),
+    -- | The reference to the data source column that this value reads from.
+    dataSourceColumnReference :: (Core.Maybe DataSourceColumnReference),
+    -- | A custom formula to calculate the value. The formula must start with an @=@ character.
+    formula :: (Core.Maybe Core.Text),
+    -- | A name to use for the value.
+    name :: (Core.Maybe Core.Text),
+    -- | 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@.
+    sourceColumnOffset :: (Core.Maybe Core.Int32),
+    -- | 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.
+    summarizeFunction :: (Core.Maybe PivotValue_SummarizeFunction)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PivotValue' with the minimum fields required to make a request.
+newPivotValue ::
+  PivotValue
+newPivotValue =
+  PivotValue
+    { calculatedDisplayType = Core.Nothing,
+      dataSourceColumnReference = Core.Nothing,
+      formula = Core.Nothing,
+      name = Core.Nothing,
+      sourceColumnOffset = Core.Nothing,
+      summarizeFunction = Core.Nothing
+    }
+
+instance Core.FromJSON PivotValue where
+  parseJSON =
+    Core.withObject
+      "PivotValue"
+      ( \o ->
+          PivotValue
+            Core.<$> (o Core..:? "calculatedDisplayType")
+            Core.<*> (o Core..:? "dataSourceColumnReference")
+            Core.<*> (o Core..:? "formula")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "sourceColumnOffset")
+            Core.<*> (o Core..:? "summarizeFunction")
+      )
+
+instance Core.ToJSON PivotValue where
+  toJSON PivotValue {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("calculatedDisplayType" Core..=) Core.<$> calculatedDisplayType,
+            ("dataSourceColumnReference" Core..=)
+              Core.<$> dataSourceColumnReference,
+            ("formula" Core..=) Core.<$> formula,
+            ("name" Core..=) Core.<$> name,
+            ("sourceColumnOffset" Core..=) Core.<$> sourceColumnOffset,
+            ("summarizeFunction" Core..=) Core.<$> summarizeFunction
+          ]
+      )
+
+-- | The style of a point on the chart.
+--
+-- /See:/ 'newPointStyle' smart constructor.
+data PointStyle = PointStyle
+  { -- | The point shape. If empty or unspecified, a default shape is used.
+    shape :: (Core.Maybe PointStyle_Shape),
+    -- | The point size. If empty, a default size is used.
+    size :: (Core.Maybe Core.Double)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'PointStyle' with the minimum fields required to make a request.
+newPointStyle ::
+  PointStyle
+newPointStyle =
+  PointStyle {shape = Core.Nothing, size = Core.Nothing}
+
+instance Core.FromJSON PointStyle where
+  parseJSON =
+    Core.withObject
+      "PointStyle"
+      ( \o ->
+          PointStyle
+            Core.<$> (o Core..:? "shape")
+            Core.<*> (o Core..:? "size")
+      )
+
+instance Core.ToJSON PointStyle where
+  toJSON PointStyle {..} =
+    Core.object
+      ( Core.catMaybes
+          [("shape" Core..=) Core.<$> shape, ("size" Core..=) Core.<$> size]
+      )
+
+-- | A protected range.
+--
+-- /See:/ 'newProtectedRange' smart constructor.
+data ProtectedRange = ProtectedRange
+  { -- | The description of this protected range.
+    description :: (Core.Maybe Core.Text),
+    -- | 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.
+    editors :: (Core.Maybe Editors),
+    -- | The named range this protected range is backed by, if any. When writing, only one of range or named/range/id may be set.
+    namedRangeId :: (Core.Maybe Core.Text),
+    -- | The ID of the protected range. This field is read-only.
+    protectedRangeId :: (Core.Maybe Core.Int32),
+    -- | 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.
+    range :: (Core.Maybe GridRange),
+    -- | True if the user who requested this protected range can edit the protected area. This field is read-only.
+    requestingUserCanEdit :: (Core.Maybe Core.Bool),
+    -- | The list of unprotected ranges within a protected sheet. Unprotected ranges are only supported on protected sheets.
+    unprotectedRanges :: (Core.Maybe [GridRange]),
+    -- | 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 are 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.
+    warningOnly :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ProtectedRange' with the minimum fields required to make a request.
+newProtectedRange ::
+  ProtectedRange
+newProtectedRange =
+  ProtectedRange
+    { description = Core.Nothing,
+      editors = Core.Nothing,
+      namedRangeId = Core.Nothing,
+      protectedRangeId = Core.Nothing,
+      range = Core.Nothing,
+      requestingUserCanEdit = Core.Nothing,
+      unprotectedRanges = Core.Nothing,
+      warningOnly = Core.Nothing
+    }
+
+instance Core.FromJSON ProtectedRange where
+  parseJSON =
+    Core.withObject
+      "ProtectedRange"
+      ( \o ->
+          ProtectedRange
+            Core.<$> (o Core..:? "description")
+            Core.<*> (o Core..:? "editors")
+            Core.<*> (o Core..:? "namedRangeId")
+            Core.<*> (o Core..:? "protectedRangeId")
+            Core.<*> (o Core..:? "range")
+            Core.<*> (o Core..:? "requestingUserCanEdit")
+            Core.<*> (o Core..:? "unprotectedRanges")
+            Core.<*> (o Core..:? "warningOnly")
+      )
+
+instance Core.ToJSON ProtectedRange where
+  toJSON ProtectedRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("description" Core..=) Core.<$> description,
+            ("editors" Core..=) Core.<$> editors,
+            ("namedRangeId" Core..=) Core.<$> namedRangeId,
+            ("protectedRangeId" Core..=) Core.<$> protectedRangeId,
+            ("range" Core..=) Core.<$> range,
+            ("requestingUserCanEdit" Core..=) Core.<$> requestingUserCanEdit,
+            ("unprotectedRanges" Core..=) Core.<$> unprotectedRanges,
+            ("warningOnly" Core..=) Core.<$> warningOnly
+          ]
+      )
+
+-- | Randomizes the order of the rows in a range.
+--
+-- /See:/ 'newRandomizeRangeRequest' smart constructor.
+newtype RandomizeRangeRequest = RandomizeRangeRequest
+  { -- | The range to randomize.
+    range :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RandomizeRangeRequest' with the minimum fields required to make a request.
+newRandomizeRangeRequest ::
+  RandomizeRangeRequest
+newRandomizeRangeRequest =
+  RandomizeRangeRequest {range = Core.Nothing}
+
+instance Core.FromJSON RandomizeRangeRequest where
+  parseJSON =
+    Core.withObject
+      "RandomizeRangeRequest"
+      (\o -> RandomizeRangeRequest Core.<$> (o Core..:? "range"))
+
+instance Core.ToJSON RandomizeRangeRequest where
+  toJSON RandomizeRangeRequest {..} =
+    Core.object (Core.catMaybes [("range" Core..=) Core.<$> range])
+
+-- | The status of a refresh cancellation. You can send a cancel request to explicitly cancel one or multiple data source object refreshes.
+--
+-- /See:/ 'newRefreshCancellationStatus' smart constructor.
+data RefreshCancellationStatus = RefreshCancellationStatus
+  { -- | The error code.
+    errorCode :: (Core.Maybe RefreshCancellationStatus_ErrorCode),
+    -- | The state of a call to cancel a refresh in Sheets.
+    state :: (Core.Maybe RefreshCancellationStatus_State)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RefreshCancellationStatus' with the minimum fields required to make a request.
+newRefreshCancellationStatus ::
+  RefreshCancellationStatus
+newRefreshCancellationStatus =
+  RefreshCancellationStatus
+    { errorCode = Core.Nothing,
+      state = Core.Nothing
+    }
+
+instance Core.FromJSON RefreshCancellationStatus where
+  parseJSON =
+    Core.withObject
+      "RefreshCancellationStatus"
+      ( \o ->
+          RefreshCancellationStatus
+            Core.<$> (o Core..:? "errorCode")
+            Core.<*> (o Core..:? "state")
+      )
+
+instance Core.ToJSON RefreshCancellationStatus where
+  toJSON RefreshCancellationStatus {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("errorCode" Core..=) Core.<$> errorCode,
+            ("state" Core..=) Core.<$> state
+          ]
+      )
+
+-- | The execution status of refreshing one data source object.
+--
+-- /See:/ 'newRefreshDataSourceObjectExecutionStatus' smart constructor.
+data RefreshDataSourceObjectExecutionStatus = RefreshDataSourceObjectExecutionStatus
+  { -- | The data execution status.
+    dataExecutionStatus :: (Core.Maybe DataExecutionStatus),
+    -- | Reference to a data source object being refreshed.
+    reference :: (Core.Maybe DataSourceObjectReference)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RefreshDataSourceObjectExecutionStatus' with the minimum fields required to make a request.
+newRefreshDataSourceObjectExecutionStatus ::
+  RefreshDataSourceObjectExecutionStatus
+newRefreshDataSourceObjectExecutionStatus =
+  RefreshDataSourceObjectExecutionStatus
+    { dataExecutionStatus =
+        Core.Nothing,
+      reference = Core.Nothing
+    }
+
+instance Core.FromJSON RefreshDataSourceObjectExecutionStatus where
+  parseJSON =
+    Core.withObject
+      "RefreshDataSourceObjectExecutionStatus"
+      ( \o ->
+          RefreshDataSourceObjectExecutionStatus
+            Core.<$> (o Core..:? "dataExecutionStatus")
+            Core.<*> (o Core..:? "reference")
+      )
+
+instance Core.ToJSON RefreshDataSourceObjectExecutionStatus where
+  toJSON RefreshDataSourceObjectExecutionStatus {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataExecutionStatus" Core..=) Core.<$> dataExecutionStatus,
+            ("reference" Core..=) Core.<$> reference
+          ]
+      )
+
+-- | Refreshes one or multiple data source objects in the spreadsheet by the specified references. The request requires an additional @bigquery.readonly@ OAuth scope if you are refreshing a BigQuery data source. If there are multiple refresh requests referencing the same data source objects in one batch, only the last refresh request is processed, and all those requests will have the same response accordingly.
+--
+-- /See:/ 'newRefreshDataSourceRequest' smart constructor.
+data RefreshDataSourceRequest = RefreshDataSourceRequest
+  { -- | Reference to a DataSource. If specified, refreshes all associated data source objects for the data source.
+    dataSourceId :: (Core.Maybe Core.Text),
+    -- | Refreshes the data source objects regardless of the current state. If not set and a referenced data source object was in error state, the refresh will fail immediately.
+    force :: (Core.Maybe Core.Bool),
+    -- | Refreshes all existing data source objects in the spreadsheet.
+    isAll :: (Core.Maybe Core.Bool),
+    -- | References to data source objects to refresh.
+    references :: (Core.Maybe DataSourceObjectReferences)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RefreshDataSourceRequest' with the minimum fields required to make a request.
+newRefreshDataSourceRequest ::
+  RefreshDataSourceRequest
+newRefreshDataSourceRequest =
+  RefreshDataSourceRequest
+    { dataSourceId = Core.Nothing,
+      force = Core.Nothing,
+      isAll = Core.Nothing,
+      references = Core.Nothing
+    }
+
+instance Core.FromJSON RefreshDataSourceRequest where
+  parseJSON =
+    Core.withObject
+      "RefreshDataSourceRequest"
+      ( \o ->
+          RefreshDataSourceRequest
+            Core.<$> (o Core..:? "dataSourceId")
+            Core.<*> (o Core..:? "force")
+            Core.<*> (o Core..:? "isAll")
+            Core.<*> (o Core..:? "references")
+      )
+
+instance Core.ToJSON RefreshDataSourceRequest where
+  toJSON RefreshDataSourceRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceId" Core..=) Core.<$> dataSourceId,
+            ("force" Core..=) Core.<$> force,
+            ("isAll" Core..=) Core.<$> isAll,
+            ("references" Core..=) Core.<$> references
+          ]
+      )
+
+-- | The response from refreshing one or multiple data source objects.
+--
+-- /See:/ 'newRefreshDataSourceResponse' smart constructor.
+newtype RefreshDataSourceResponse = RefreshDataSourceResponse
+  { -- | All the refresh status for the data source object references specified in the request. If is_all is specified, the field contains only those in failure status.
+    statuses :: (Core.Maybe [RefreshDataSourceObjectExecutionStatus])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RefreshDataSourceResponse' with the minimum fields required to make a request.
+newRefreshDataSourceResponse ::
+  RefreshDataSourceResponse
+newRefreshDataSourceResponse =
+  RefreshDataSourceResponse {statuses = Core.Nothing}
+
+instance Core.FromJSON RefreshDataSourceResponse where
+  parseJSON =
+    Core.withObject
+      "RefreshDataSourceResponse"
+      (\o -> RefreshDataSourceResponse Core.<$> (o Core..:? "statuses"))
+
+instance Core.ToJSON RefreshDataSourceResponse where
+  toJSON RefreshDataSourceResponse {..} =
+    Core.object
+      (Core.catMaybes [("statuses" Core..=) Core.<$> statuses])
+
+-- | 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:/ 'newRepeatCellRequest' smart constructor.
+data RepeatCellRequest = RepeatCellRequest
+  { -- | The data to write.
+    cell :: (Core.Maybe CellData),
+    -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | The range to repeat the cell in.
+    range :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RepeatCellRequest' with the minimum fields required to make a request.
+newRepeatCellRequest ::
+  RepeatCellRequest
+newRepeatCellRequest =
+  RepeatCellRequest
+    { cell = Core.Nothing,
+      fields = Core.Nothing,
+      range = Core.Nothing
+    }
+
+instance Core.FromJSON RepeatCellRequest where
+  parseJSON =
+    Core.withObject
+      "RepeatCellRequest"
+      ( \o ->
+          RepeatCellRequest
+            Core.<$> (o Core..:? "cell")
+            Core.<*> (o Core..:? "fields")
+            Core.<*> (o Core..:? "range")
+      )
+
+instance Core.ToJSON RepeatCellRequest where
+  toJSON RepeatCellRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("cell" Core..=) Core.<$> cell,
+            ("fields" Core..=) Core.<$> fields,
+            ("range" Core..=) Core.<$> range
+          ]
+      )
+
+-- | A single kind of update to apply to a spreadsheet.
+--
+-- /See:/ 'newRequest' smart constructor.
+data Request' = Request'
+  { -- | Adds a new banded range
+    addBanding :: (Core.Maybe AddBandingRequest),
+    -- | Adds a chart.
+    addChart :: (Core.Maybe AddChartRequest),
+    -- | Adds a new conditional format rule.
+    addConditionalFormatRule :: (Core.Maybe AddConditionalFormatRuleRequest),
+    -- | Adds a data source.
+    addDataSource :: (Core.Maybe AddDataSourceRequest),
+    -- | Creates a group over the specified range.
+    addDimensionGroup :: (Core.Maybe AddDimensionGroupRequest),
+    -- | Adds a filter view.
+    addFilterView :: (Core.Maybe AddFilterViewRequest),
+    -- | Adds a named range.
+    addNamedRange :: (Core.Maybe AddNamedRangeRequest),
+    -- | Adds a protected range.
+    addProtectedRange :: (Core.Maybe AddProtectedRangeRequest),
+    -- | Adds a sheet.
+    addSheet :: (Core.Maybe AddSheetRequest),
+    -- | Adds a slicer.
+    addSlicer :: (Core.Maybe AddSlicerRequest),
+    -- | Appends cells after the last row with data in a sheet.
+    appendCells :: (Core.Maybe AppendCellsRequest),
+    -- | Appends dimensions to the end of a sheet.
+    appendDimension :: (Core.Maybe AppendDimensionRequest),
+    -- | Automatically fills in more data based on existing data.
+    autoFill :: (Core.Maybe AutoFillRequest),
+    -- | Automatically resizes one or more dimensions based on the contents of the cells in that dimension.
+    autoResizeDimensions :: (Core.Maybe AutoResizeDimensionsRequest),
+    -- | Cancels refreshes of one or multiple data sources and associated dbobjects.
+    cancelDataSourceRefresh :: (Core.Maybe CancelDataSourceRefreshRequest),
+    -- | Clears the basic filter on a sheet.
+    clearBasicFilter :: (Core.Maybe ClearBasicFilterRequest),
+    -- | Copies data from one area and pastes it to another.
+    copyPaste :: (Core.Maybe CopyPasteRequest),
+    -- | Creates new developer metadata
+    createDeveloperMetadata :: (Core.Maybe CreateDeveloperMetadataRequest),
+    -- | Cuts data from one area and pastes it to another.
+    cutPaste :: (Core.Maybe CutPasteRequest),
+    -- | Removes a banded range
+    deleteBanding :: (Core.Maybe DeleteBandingRequest),
+    -- | Deletes an existing conditional format rule.
+    deleteConditionalFormatRule :: (Core.Maybe DeleteConditionalFormatRuleRequest),
+    -- | Deletes a data source.
+    deleteDataSource :: (Core.Maybe DeleteDataSourceRequest),
+    -- | Deletes developer metadata
+    deleteDeveloperMetadata :: (Core.Maybe DeleteDeveloperMetadataRequest),
+    -- | Deletes rows or columns in a sheet.
+    deleteDimension :: (Core.Maybe DeleteDimensionRequest),
+    -- | Deletes a group over the specified range.
+    deleteDimensionGroup :: (Core.Maybe DeleteDimensionGroupRequest),
+    -- | Removes rows containing duplicate values in specified columns of a cell range.
+    deleteDuplicates :: (Core.Maybe DeleteDuplicatesRequest),
+    -- | Deletes an embedded object (e.g, chart, image) in a sheet.
+    deleteEmbeddedObject :: (Core.Maybe DeleteEmbeddedObjectRequest),
+    -- | Deletes a filter view from a sheet.
+    deleteFilterView :: (Core.Maybe DeleteFilterViewRequest),
+    -- | Deletes a named range.
+    deleteNamedRange :: (Core.Maybe DeleteNamedRangeRequest),
+    -- | Deletes a protected range.
+    deleteProtectedRange :: (Core.Maybe DeleteProtectedRangeRequest),
+    -- | Deletes a range of cells from a sheet, shifting the remaining cells.
+    deleteRange :: (Core.Maybe DeleteRangeRequest),
+    -- | Deletes a sheet.
+    deleteSheet :: (Core.Maybe DeleteSheetRequest),
+    -- | Duplicates a filter view.
+    duplicateFilterView :: (Core.Maybe DuplicateFilterViewRequest),
+    -- | Duplicates a sheet.
+    duplicateSheet :: (Core.Maybe DuplicateSheetRequest),
+    -- | Finds and replaces occurrences of some text with other text.
+    findReplace :: (Core.Maybe FindReplaceRequest),
+    -- | Inserts new rows or columns in a sheet.
+    insertDimension :: (Core.Maybe InsertDimensionRequest),
+    -- | Inserts new cells in a sheet, shifting the existing cells.
+    insertRange :: (Core.Maybe InsertRangeRequest),
+    -- | Merges cells together.
+    mergeCells :: (Core.Maybe MergeCellsRequest),
+    -- | Moves rows or columns to another location in a sheet.
+    moveDimension :: (Core.Maybe MoveDimensionRequest),
+    -- | Pastes data (HTML or delimited) into a sheet.
+    pasteData :: (Core.Maybe PasteDataRequest),
+    -- | Randomizes the order of the rows in a range.
+    randomizeRange :: (Core.Maybe RandomizeRangeRequest),
+    -- | Refreshes one or multiple data sources and associated dbobjects.
+    refreshDataSource :: (Core.Maybe RefreshDataSourceRequest),
+    -- | Repeats a single cell across a range.
+    repeatCell :: (Core.Maybe RepeatCellRequest),
+    -- | Sets the basic filter on a sheet.
+    setBasicFilter :: (Core.Maybe SetBasicFilterRequest),
+    -- | Sets data validation for one or more cells.
+    setDataValidation :: (Core.Maybe SetDataValidationRequest),
+    -- | Sorts data in a range.
+    sortRange :: (Core.Maybe SortRangeRequest),
+    -- | Converts a column of text into many columns of text.
+    textToColumns :: (Core.Maybe TextToColumnsRequest),
+    -- | Trims cells of whitespace (such as spaces, tabs, or new lines).
+    trimWhitespace :: (Core.Maybe TrimWhitespaceRequest),
+    -- | Unmerges merged cells.
+    unmergeCells :: (Core.Maybe UnmergeCellsRequest),
+    -- | Updates a banded range
+    updateBanding :: (Core.Maybe UpdateBandingRequest),
+    -- | Updates the borders in a range of cells.
+    updateBorders :: (Core.Maybe UpdateBordersRequest),
+    -- | Updates many cells at once.
+    updateCells :: (Core.Maybe UpdateCellsRequest),
+    -- | Updates a chart\'s specifications.
+    updateChartSpec :: (Core.Maybe UpdateChartSpecRequest),
+    -- | Updates an existing conditional format rule.
+    updateConditionalFormatRule :: (Core.Maybe UpdateConditionalFormatRuleRequest),
+    -- | Updates a data source.
+    updateDataSource :: (Core.Maybe UpdateDataSourceRequest),
+    -- | Updates an existing developer metadata entry
+    updateDeveloperMetadata :: (Core.Maybe UpdateDeveloperMetadataRequest),
+    -- | Updates the state of the specified group.
+    updateDimensionGroup :: (Core.Maybe UpdateDimensionGroupRequest),
+    -- | Updates dimensions\' properties.
+    updateDimensionProperties :: (Core.Maybe UpdateDimensionPropertiesRequest),
+    -- | Updates an embedded object\'s border.
+    updateEmbeddedObjectBorder :: (Core.Maybe UpdateEmbeddedObjectBorderRequest),
+    -- | Updates an embedded object\'s (e.g. chart, image) position.
+    updateEmbeddedObjectPosition :: (Core.Maybe UpdateEmbeddedObjectPositionRequest),
+    -- | Updates the properties of a filter view.
+    updateFilterView :: (Core.Maybe UpdateFilterViewRequest),
+    -- | Updates a named range.
+    updateNamedRange :: (Core.Maybe UpdateNamedRangeRequest),
+    -- | Updates a protected range.
+    updateProtectedRange :: (Core.Maybe UpdateProtectedRangeRequest),
+    -- | Updates a sheet\'s properties.
+    updateSheetProperties :: (Core.Maybe UpdateSheetPropertiesRequest),
+    -- | Updates a slicer\'s specifications.
+    updateSlicerSpec :: (Core.Maybe UpdateSlicerSpecRequest),
+    -- | Updates the spreadsheet\'s properties.
+    updateSpreadsheetProperties :: (Core.Maybe UpdateSpreadsheetPropertiesRequest)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Request' with the minimum fields required to make a request.
+newRequest ::
+  Request'
+newRequest =
+  Request'
+    { addBanding = Core.Nothing,
+      addChart = Core.Nothing,
+      addConditionalFormatRule = Core.Nothing,
+      addDataSource = Core.Nothing,
+      addDimensionGroup = Core.Nothing,
+      addFilterView = Core.Nothing,
+      addNamedRange = Core.Nothing,
+      addProtectedRange = Core.Nothing,
+      addSheet = Core.Nothing,
+      addSlicer = Core.Nothing,
+      appendCells = Core.Nothing,
+      appendDimension = Core.Nothing,
+      autoFill = Core.Nothing,
+      autoResizeDimensions = Core.Nothing,
+      cancelDataSourceRefresh = Core.Nothing,
+      clearBasicFilter = Core.Nothing,
+      copyPaste = Core.Nothing,
+      createDeveloperMetadata = Core.Nothing,
+      cutPaste = Core.Nothing,
+      deleteBanding = Core.Nothing,
+      deleteConditionalFormatRule = Core.Nothing,
+      deleteDataSource = Core.Nothing,
+      deleteDeveloperMetadata = Core.Nothing,
+      deleteDimension = Core.Nothing,
+      deleteDimensionGroup = Core.Nothing,
+      deleteDuplicates = Core.Nothing,
+      deleteEmbeddedObject = Core.Nothing,
+      deleteFilterView = Core.Nothing,
+      deleteNamedRange = Core.Nothing,
+      deleteProtectedRange = Core.Nothing,
+      deleteRange = Core.Nothing,
+      deleteSheet = Core.Nothing,
+      duplicateFilterView = Core.Nothing,
+      duplicateSheet = Core.Nothing,
+      findReplace = Core.Nothing,
+      insertDimension = Core.Nothing,
+      insertRange = Core.Nothing,
+      mergeCells = Core.Nothing,
+      moveDimension = Core.Nothing,
+      pasteData = Core.Nothing,
+      randomizeRange = Core.Nothing,
+      refreshDataSource = Core.Nothing,
+      repeatCell = Core.Nothing,
+      setBasicFilter = Core.Nothing,
+      setDataValidation = Core.Nothing,
+      sortRange = Core.Nothing,
+      textToColumns = Core.Nothing,
+      trimWhitespace = Core.Nothing,
+      unmergeCells = Core.Nothing,
+      updateBanding = Core.Nothing,
+      updateBorders = Core.Nothing,
+      updateCells = Core.Nothing,
+      updateChartSpec = Core.Nothing,
+      updateConditionalFormatRule = Core.Nothing,
+      updateDataSource = Core.Nothing,
+      updateDeveloperMetadata = Core.Nothing,
+      updateDimensionGroup = Core.Nothing,
+      updateDimensionProperties = Core.Nothing,
+      updateEmbeddedObjectBorder = Core.Nothing,
+      updateEmbeddedObjectPosition = Core.Nothing,
+      updateFilterView = Core.Nothing,
+      updateNamedRange = Core.Nothing,
+      updateProtectedRange = Core.Nothing,
+      updateSheetProperties = Core.Nothing,
+      updateSlicerSpec = Core.Nothing,
+      updateSpreadsheetProperties = Core.Nothing
+    }
+
+instance Core.FromJSON Request' where
+  parseJSON =
+    Core.withObject
+      "Request'"
+      ( \o ->
+          Request'
+            Core.<$> (o Core..:? "addBanding")
+            Core.<*> (o Core..:? "addChart")
+            Core.<*> (o Core..:? "addConditionalFormatRule")
+            Core.<*> (o Core..:? "addDataSource")
+            Core.<*> (o Core..:? "addDimensionGroup")
+            Core.<*> (o Core..:? "addFilterView")
+            Core.<*> (o Core..:? "addNamedRange")
+            Core.<*> (o Core..:? "addProtectedRange")
+            Core.<*> (o Core..:? "addSheet")
+            Core.<*> (o Core..:? "addSlicer")
+            Core.<*> (o Core..:? "appendCells")
+            Core.<*> (o Core..:? "appendDimension")
+            Core.<*> (o Core..:? "autoFill")
+            Core.<*> (o Core..:? "autoResizeDimensions")
+            Core.<*> (o Core..:? "cancelDataSourceRefresh")
+            Core.<*> (o Core..:? "clearBasicFilter")
+            Core.<*> (o Core..:? "copyPaste")
+            Core.<*> (o Core..:? "createDeveloperMetadata")
+            Core.<*> (o Core..:? "cutPaste")
+            Core.<*> (o Core..:? "deleteBanding")
+            Core.<*> (o Core..:? "deleteConditionalFormatRule")
+            Core.<*> (o Core..:? "deleteDataSource")
+            Core.<*> (o Core..:? "deleteDeveloperMetadata")
+            Core.<*> (o Core..:? "deleteDimension")
+            Core.<*> (o Core..:? "deleteDimensionGroup")
+            Core.<*> (o Core..:? "deleteDuplicates")
+            Core.<*> (o Core..:? "deleteEmbeddedObject")
+            Core.<*> (o Core..:? "deleteFilterView")
+            Core.<*> (o Core..:? "deleteNamedRange")
+            Core.<*> (o Core..:? "deleteProtectedRange")
+            Core.<*> (o Core..:? "deleteRange")
+            Core.<*> (o Core..:? "deleteSheet")
+            Core.<*> (o Core..:? "duplicateFilterView")
+            Core.<*> (o Core..:? "duplicateSheet")
+            Core.<*> (o Core..:? "findReplace")
+            Core.<*> (o Core..:? "insertDimension")
+            Core.<*> (o Core..:? "insertRange")
+            Core.<*> (o Core..:? "mergeCells")
+            Core.<*> (o Core..:? "moveDimension")
+            Core.<*> (o Core..:? "pasteData")
+            Core.<*> (o Core..:? "randomizeRange")
+            Core.<*> (o Core..:? "refreshDataSource")
+            Core.<*> (o Core..:? "repeatCell")
+            Core.<*> (o Core..:? "setBasicFilter")
+            Core.<*> (o Core..:? "setDataValidation")
+            Core.<*> (o Core..:? "sortRange")
+            Core.<*> (o Core..:? "textToColumns")
+            Core.<*> (o Core..:? "trimWhitespace")
+            Core.<*> (o Core..:? "unmergeCells")
+            Core.<*> (o Core..:? "updateBanding")
+            Core.<*> (o Core..:? "updateBorders")
+            Core.<*> (o Core..:? "updateCells")
+            Core.<*> (o Core..:? "updateChartSpec")
+            Core.<*> (o Core..:? "updateConditionalFormatRule")
+            Core.<*> (o Core..:? "updateDataSource")
+            Core.<*> (o Core..:? "updateDeveloperMetadata")
+            Core.<*> (o Core..:? "updateDimensionGroup")
+            Core.<*> (o Core..:? "updateDimensionProperties")
+            Core.<*> (o Core..:? "updateEmbeddedObjectBorder")
+            Core.<*> (o Core..:? "updateEmbeddedObjectPosition")
+            Core.<*> (o Core..:? "updateFilterView")
+            Core.<*> (o Core..:? "updateNamedRange")
+            Core.<*> (o Core..:? "updateProtectedRange")
+            Core.<*> (o Core..:? "updateSheetProperties")
+            Core.<*> (o Core..:? "updateSlicerSpec")
+            Core.<*> (o Core..:? "updateSpreadsheetProperties")
+      )
+
+instance Core.ToJSON Request' where
+  toJSON Request' {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("addBanding" Core..=) Core.<$> addBanding,
+            ("addChart" Core..=) Core.<$> addChart,
+            ("addConditionalFormatRule" Core..=)
+              Core.<$> addConditionalFormatRule,
+            ("addDataSource" Core..=) Core.<$> addDataSource,
+            ("addDimensionGroup" Core..=) Core.<$> addDimensionGroup,
+            ("addFilterView" Core..=) Core.<$> addFilterView,
+            ("addNamedRange" Core..=) Core.<$> addNamedRange,
+            ("addProtectedRange" Core..=) Core.<$> addProtectedRange,
+            ("addSheet" Core..=) Core.<$> addSheet,
+            ("addSlicer" Core..=) Core.<$> addSlicer,
+            ("appendCells" Core..=) Core.<$> appendCells,
+            ("appendDimension" Core..=) Core.<$> appendDimension,
+            ("autoFill" Core..=) Core.<$> autoFill,
+            ("autoResizeDimensions" Core..=) Core.<$> autoResizeDimensions,
+            ("cancelDataSourceRefresh" Core..=)
+              Core.<$> cancelDataSourceRefresh,
+            ("clearBasicFilter" Core..=) Core.<$> clearBasicFilter,
+            ("copyPaste" Core..=) Core.<$> copyPaste,
+            ("createDeveloperMetadata" Core..=)
+              Core.<$> createDeveloperMetadata,
+            ("cutPaste" Core..=) Core.<$> cutPaste,
+            ("deleteBanding" Core..=) Core.<$> deleteBanding,
+            ("deleteConditionalFormatRule" Core..=)
+              Core.<$> deleteConditionalFormatRule,
+            ("deleteDataSource" Core..=) Core.<$> deleteDataSource,
+            ("deleteDeveloperMetadata" Core..=)
+              Core.<$> deleteDeveloperMetadata,
+            ("deleteDimension" Core..=) Core.<$> deleteDimension,
+            ("deleteDimensionGroup" Core..=) Core.<$> deleteDimensionGroup,
+            ("deleteDuplicates" Core..=) Core.<$> deleteDuplicates,
+            ("deleteEmbeddedObject" Core..=) Core.<$> deleteEmbeddedObject,
+            ("deleteFilterView" Core..=) Core.<$> deleteFilterView,
+            ("deleteNamedRange" Core..=) Core.<$> deleteNamedRange,
+            ("deleteProtectedRange" Core..=) Core.<$> deleteProtectedRange,
+            ("deleteRange" Core..=) Core.<$> deleteRange,
+            ("deleteSheet" Core..=) Core.<$> deleteSheet,
+            ("duplicateFilterView" Core..=) Core.<$> duplicateFilterView,
+            ("duplicateSheet" Core..=) Core.<$> duplicateSheet,
+            ("findReplace" Core..=) Core.<$> findReplace,
+            ("insertDimension" Core..=) Core.<$> insertDimension,
+            ("insertRange" Core..=) Core.<$> insertRange,
+            ("mergeCells" Core..=) Core.<$> mergeCells,
+            ("moveDimension" Core..=) Core.<$> moveDimension,
+            ("pasteData" Core..=) Core.<$> pasteData,
+            ("randomizeRange" Core..=) Core.<$> randomizeRange,
+            ("refreshDataSource" Core..=) Core.<$> refreshDataSource,
+            ("repeatCell" Core..=) Core.<$> repeatCell,
+            ("setBasicFilter" Core..=) Core.<$> setBasicFilter,
+            ("setDataValidation" Core..=) Core.<$> setDataValidation,
+            ("sortRange" Core..=) Core.<$> sortRange,
+            ("textToColumns" Core..=) Core.<$> textToColumns,
+            ("trimWhitespace" Core..=) Core.<$> trimWhitespace,
+            ("unmergeCells" Core..=) Core.<$> unmergeCells,
+            ("updateBanding" Core..=) Core.<$> updateBanding,
+            ("updateBorders" Core..=) Core.<$> updateBorders,
+            ("updateCells" Core..=) Core.<$> updateCells,
+            ("updateChartSpec" Core..=) Core.<$> updateChartSpec,
+            ("updateConditionalFormatRule" Core..=)
+              Core.<$> updateConditionalFormatRule,
+            ("updateDataSource" Core..=) Core.<$> updateDataSource,
+            ("updateDeveloperMetadata" Core..=)
+              Core.<$> updateDeveloperMetadata,
+            ("updateDimensionGroup" Core..=) Core.<$> updateDimensionGroup,
+            ("updateDimensionProperties" Core..=)
+              Core.<$> updateDimensionProperties,
+            ("updateEmbeddedObjectBorder" Core..=)
+              Core.<$> updateEmbeddedObjectBorder,
+            ("updateEmbeddedObjectPosition" Core..=)
+              Core.<$> updateEmbeddedObjectPosition,
+            ("updateFilterView" Core..=) Core.<$> updateFilterView,
+            ("updateNamedRange" Core..=) Core.<$> updateNamedRange,
+            ("updateProtectedRange" Core..=) Core.<$> updateProtectedRange,
+            ("updateSheetProperties" Core..=) Core.<$> updateSheetProperties,
+            ("updateSlicerSpec" Core..=) Core.<$> updateSlicerSpec,
+            ("updateSpreadsheetProperties" Core..=)
+              Core.<$> updateSpreadsheetProperties
+          ]
+      )
+
+-- | A single response from an update.
+--
+-- /See:/ 'newResponse' smart constructor.
+data Response = Response
+  { -- | A reply from adding a banded range.
+    addBanding :: (Core.Maybe AddBandingResponse),
+    -- | A reply from adding a chart.
+    addChart :: (Core.Maybe AddChartResponse),
+    -- | A reply from adding a data source.
+    addDataSource :: (Core.Maybe AddDataSourceResponse),
+    -- | A reply from adding a dimension group.
+    addDimensionGroup :: (Core.Maybe AddDimensionGroupResponse),
+    -- | A reply from adding a filter view.
+    addFilterView :: (Core.Maybe AddFilterViewResponse),
+    -- | A reply from adding a named range.
+    addNamedRange :: (Core.Maybe AddNamedRangeResponse),
+    -- | A reply from adding a protected range.
+    addProtectedRange :: (Core.Maybe AddProtectedRangeResponse),
+    -- | A reply from adding a sheet.
+    addSheet :: (Core.Maybe AddSheetResponse),
+    -- | A reply from adding a slicer.
+    addSlicer :: (Core.Maybe AddSlicerResponse),
+    -- | A reply from cancelling data source object refreshes.
+    cancelDataSourceRefresh :: (Core.Maybe CancelDataSourceRefreshResponse),
+    -- | A reply from creating a developer metadata entry.
+    createDeveloperMetadata :: (Core.Maybe CreateDeveloperMetadataResponse),
+    -- | A reply from deleting a conditional format rule.
+    deleteConditionalFormatRule :: (Core.Maybe DeleteConditionalFormatRuleResponse),
+    -- | A reply from deleting a developer metadata entry.
+    deleteDeveloperMetadata :: (Core.Maybe DeleteDeveloperMetadataResponse),
+    -- | A reply from deleting a dimension group.
+    deleteDimensionGroup :: (Core.Maybe DeleteDimensionGroupResponse),
+    -- | A reply from removing rows containing duplicate values.
+    deleteDuplicates :: (Core.Maybe DeleteDuplicatesResponse),
+    -- | A reply from duplicating a filter view.
+    duplicateFilterView :: (Core.Maybe DuplicateFilterViewResponse),
+    -- | A reply from duplicating a sheet.
+    duplicateSheet :: (Core.Maybe DuplicateSheetResponse),
+    -- | A reply from doing a find\/replace.
+    findReplace :: (Core.Maybe FindReplaceResponse),
+    -- | A reply from refreshing data source objects.
+    refreshDataSource :: (Core.Maybe RefreshDataSourceResponse),
+    -- | A reply from trimming whitespace.
+    trimWhitespace :: (Core.Maybe TrimWhitespaceResponse),
+    -- | A reply from updating a conditional format rule.
+    updateConditionalFormatRule :: (Core.Maybe UpdateConditionalFormatRuleResponse),
+    -- | A reply from updating a data source.
+    updateDataSource :: (Core.Maybe UpdateDataSourceResponse),
+    -- | A reply from updating a developer metadata entry.
+    updateDeveloperMetadata :: (Core.Maybe UpdateDeveloperMetadataResponse),
+    -- | A reply from updating an embedded object\'s position.
+    updateEmbeddedObjectPosition :: (Core.Maybe UpdateEmbeddedObjectPositionResponse)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Response' with the minimum fields required to make a request.
+newResponse ::
+  Response
+newResponse =
+  Response
+    { addBanding = Core.Nothing,
+      addChart = Core.Nothing,
+      addDataSource = Core.Nothing,
+      addDimensionGroup = Core.Nothing,
+      addFilterView = Core.Nothing,
+      addNamedRange = Core.Nothing,
+      addProtectedRange = Core.Nothing,
+      addSheet = Core.Nothing,
+      addSlicer = Core.Nothing,
+      cancelDataSourceRefresh = Core.Nothing,
+      createDeveloperMetadata = Core.Nothing,
+      deleteConditionalFormatRule = Core.Nothing,
+      deleteDeveloperMetadata = Core.Nothing,
+      deleteDimensionGroup = Core.Nothing,
+      deleteDuplicates = Core.Nothing,
+      duplicateFilterView = Core.Nothing,
+      duplicateSheet = Core.Nothing,
+      findReplace = Core.Nothing,
+      refreshDataSource = Core.Nothing,
+      trimWhitespace = Core.Nothing,
+      updateConditionalFormatRule = Core.Nothing,
+      updateDataSource = Core.Nothing,
+      updateDeveloperMetadata = Core.Nothing,
+      updateEmbeddedObjectPosition = Core.Nothing
+    }
+
+instance Core.FromJSON Response where
+  parseJSON =
+    Core.withObject
+      "Response"
+      ( \o ->
+          Response
+            Core.<$> (o Core..:? "addBanding")
+            Core.<*> (o Core..:? "addChart")
+            Core.<*> (o Core..:? "addDataSource")
+            Core.<*> (o Core..:? "addDimensionGroup")
+            Core.<*> (o Core..:? "addFilterView")
+            Core.<*> (o Core..:? "addNamedRange")
+            Core.<*> (o Core..:? "addProtectedRange")
+            Core.<*> (o Core..:? "addSheet")
+            Core.<*> (o Core..:? "addSlicer")
+            Core.<*> (o Core..:? "cancelDataSourceRefresh")
+            Core.<*> (o Core..:? "createDeveloperMetadata")
+            Core.<*> (o Core..:? "deleteConditionalFormatRule")
+            Core.<*> (o Core..:? "deleteDeveloperMetadata")
+            Core.<*> (o Core..:? "deleteDimensionGroup")
+            Core.<*> (o Core..:? "deleteDuplicates")
+            Core.<*> (o Core..:? "duplicateFilterView")
+            Core.<*> (o Core..:? "duplicateSheet")
+            Core.<*> (o Core..:? "findReplace")
+            Core.<*> (o Core..:? "refreshDataSource")
+            Core.<*> (o Core..:? "trimWhitespace")
+            Core.<*> (o Core..:? "updateConditionalFormatRule")
+            Core.<*> (o Core..:? "updateDataSource")
+            Core.<*> (o Core..:? "updateDeveloperMetadata")
+            Core.<*> (o Core..:? "updateEmbeddedObjectPosition")
+      )
+
+instance Core.ToJSON Response where
+  toJSON Response {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("addBanding" Core..=) Core.<$> addBanding,
+            ("addChart" Core..=) Core.<$> addChart,
+            ("addDataSource" Core..=) Core.<$> addDataSource,
+            ("addDimensionGroup" Core..=) Core.<$> addDimensionGroup,
+            ("addFilterView" Core..=) Core.<$> addFilterView,
+            ("addNamedRange" Core..=) Core.<$> addNamedRange,
+            ("addProtectedRange" Core..=) Core.<$> addProtectedRange,
+            ("addSheet" Core..=) Core.<$> addSheet,
+            ("addSlicer" Core..=) Core.<$> addSlicer,
+            ("cancelDataSourceRefresh" Core..=)
+              Core.<$> cancelDataSourceRefresh,
+            ("createDeveloperMetadata" Core..=)
+              Core.<$> createDeveloperMetadata,
+            ("deleteConditionalFormatRule" Core..=)
+              Core.<$> deleteConditionalFormatRule,
+            ("deleteDeveloperMetadata" Core..=)
+              Core.<$> deleteDeveloperMetadata,
+            ("deleteDimensionGroup" Core..=) Core.<$> deleteDimensionGroup,
+            ("deleteDuplicates" Core..=) Core.<$> deleteDuplicates,
+            ("duplicateFilterView" Core..=) Core.<$> duplicateFilterView,
+            ("duplicateSheet" Core..=) Core.<$> duplicateSheet,
+            ("findReplace" Core..=) Core.<$> findReplace,
+            ("refreshDataSource" Core..=) Core.<$> refreshDataSource,
+            ("trimWhitespace" Core..=) Core.<$> trimWhitespace,
+            ("updateConditionalFormatRule" Core..=)
+              Core.<$> updateConditionalFormatRule,
+            ("updateDataSource" Core..=) Core.<$> updateDataSource,
+            ("updateDeveloperMetadata" Core..=)
+              Core.<$> updateDeveloperMetadata,
+            ("updateEmbeddedObjectPosition" Core..=)
+              Core.<$> updateEmbeddedObjectPosition
+          ]
+      )
+
+-- | Data about each cell in a row.
+--
+-- /See:/ 'newRowData' smart constructor.
+newtype RowData = RowData
+  { -- | The values in the row, one per column.
+    values :: (Core.Maybe [CellData])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RowData' with the minimum fields required to make a request.
+newRowData ::
+  RowData
+newRowData = RowData {values = Core.Nothing}
+
+instance Core.FromJSON RowData where
+  parseJSON =
+    Core.withObject
+      "RowData"
+      (\o -> RowData Core.<$> (o Core..:? "values"))
+
+instance Core.ToJSON RowData where
+  toJSON RowData {..} =
+    Core.object (Core.catMaybes [("values" Core..=) Core.<$> values])
+
+-- | A scorecard chart. Scorecard charts are used to highlight key performance indicators, known as KPIs, on the spreadsheet. A scorecard chart can represent things like total sales, average cost, or a top selling item. You can specify a single data value, or aggregate over a range of data. Percentage or absolute difference from a baseline value can be highlighted, like changes over time.
+--
+-- /See:/ 'newScorecardChartSpec' smart constructor.
+data ScorecardChartSpec = ScorecardChartSpec
+  { -- | The aggregation type for key and baseline chart data in scorecard chart. This field is not supported for data source charts. Use the ChartData.aggregateType field of the key/value/data or baseline/value/data instead for data source charts. This field is optional.
+    aggregateType :: (Core.Maybe ScorecardChartSpec_AggregateType),
+    -- | The data for scorecard baseline value. This field is optional.
+    baselineValueData :: (Core.Maybe ChartData),
+    -- | Formatting options for baseline value. This field is needed only if baseline/value/data is specified.
+    baselineValueFormat :: (Core.Maybe BaselineValueFormat),
+    -- | Custom formatting options for numeric key\/baseline values in scorecard chart. This field is used only when number/format/source is set to CUSTOM. This field is optional.
+    customFormatOptions :: (Core.Maybe ChartCustomNumberFormatOptions),
+    -- | The data for scorecard key value.
+    keyValueData :: (Core.Maybe ChartData),
+    -- | Formatting options for key value.
+    keyValueFormat :: (Core.Maybe KeyValueFormat),
+    -- | The number format source used in the scorecard chart. This field is optional.
+    numberFormatSource :: (Core.Maybe ScorecardChartSpec_NumberFormatSource),
+    -- | Value to scale scorecard key and baseline value. For example, a factor of 10 can be used to divide all values in the chart by 10. This field is optional.
+    scaleFactor :: (Core.Maybe Core.Double)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ScorecardChartSpec' with the minimum fields required to make a request.
+newScorecardChartSpec ::
+  ScorecardChartSpec
+newScorecardChartSpec =
+  ScorecardChartSpec
+    { aggregateType = Core.Nothing,
+      baselineValueData = Core.Nothing,
+      baselineValueFormat = Core.Nothing,
+      customFormatOptions = Core.Nothing,
+      keyValueData = Core.Nothing,
+      keyValueFormat = Core.Nothing,
+      numberFormatSource = Core.Nothing,
+      scaleFactor = Core.Nothing
+    }
+
+instance Core.FromJSON ScorecardChartSpec where
+  parseJSON =
+    Core.withObject
+      "ScorecardChartSpec"
+      ( \o ->
+          ScorecardChartSpec
+            Core.<$> (o Core..:? "aggregateType")
+            Core.<*> (o Core..:? "baselineValueData")
+            Core.<*> (o Core..:? "baselineValueFormat")
+            Core.<*> (o Core..:? "customFormatOptions")
+            Core.<*> (o Core..:? "keyValueData")
+            Core.<*> (o Core..:? "keyValueFormat")
+            Core.<*> (o Core..:? "numberFormatSource")
+            Core.<*> (o Core..:? "scaleFactor")
+      )
+
+instance Core.ToJSON ScorecardChartSpec where
+  toJSON ScorecardChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("aggregateType" Core..=) Core.<$> aggregateType,
+            ("baselineValueData" Core..=) Core.<$> baselineValueData,
+            ("baselineValueFormat" Core..=) Core.<$> baselineValueFormat,
+            ("customFormatOptions" Core..=) Core.<$> customFormatOptions,
+            ("keyValueData" Core..=) Core.<$> keyValueData,
+            ("keyValueFormat" Core..=) Core.<$> keyValueFormat,
+            ("numberFormatSource" Core..=) Core.<$> numberFormatSource,
+            ("scaleFactor" Core..=) Core.<$> scaleFactor
+          ]
+      )
+
+-- | A request to retrieve all developer metadata matching the set of specified criteria.
+--
+-- /See:/ 'newSearchDeveloperMetadataRequest' smart constructor.
+newtype SearchDeveloperMetadataRequest = SearchDeveloperMetadataRequest
+  { -- | The data filters describing the criteria used to determine which DeveloperMetadata entries to return. DeveloperMetadata matching any of the specified filters are included in the response.
+    dataFilters :: (Core.Maybe [DataFilter])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SearchDeveloperMetadataRequest' with the minimum fields required to make a request.
+newSearchDeveloperMetadataRequest ::
+  SearchDeveloperMetadataRequest
+newSearchDeveloperMetadataRequest =
+  SearchDeveloperMetadataRequest {dataFilters = Core.Nothing}
+
+instance Core.FromJSON SearchDeveloperMetadataRequest where
+  parseJSON =
+    Core.withObject
+      "SearchDeveloperMetadataRequest"
+      ( \o ->
+          SearchDeveloperMetadataRequest Core.<$> (o Core..:? "dataFilters")
+      )
+
+instance Core.ToJSON SearchDeveloperMetadataRequest where
+  toJSON SearchDeveloperMetadataRequest {..} =
+    Core.object
+      (Core.catMaybes [("dataFilters" Core..=) Core.<$> dataFilters])
+
+-- | A reply to a developer metadata search request.
+--
+-- /See:/ 'newSearchDeveloperMetadataResponse' smart constructor.
+newtype SearchDeveloperMetadataResponse = SearchDeveloperMetadataResponse
+  { -- | The metadata matching the criteria of the search request.
+    matchedDeveloperMetadata :: (Core.Maybe [MatchedDeveloperMetadata])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SearchDeveloperMetadataResponse' with the minimum fields required to make a request.
+newSearchDeveloperMetadataResponse ::
+  SearchDeveloperMetadataResponse
+newSearchDeveloperMetadataResponse =
+  SearchDeveloperMetadataResponse
+    { matchedDeveloperMetadata =
+        Core.Nothing
+    }
+
+instance Core.FromJSON SearchDeveloperMetadataResponse where
+  parseJSON =
+    Core.withObject
+      "SearchDeveloperMetadataResponse"
+      ( \o ->
+          SearchDeveloperMetadataResponse
+            Core.<$> (o Core..:? "matchedDeveloperMetadata")
+      )
+
+instance Core.ToJSON SearchDeveloperMetadataResponse where
+  toJSON SearchDeveloperMetadataResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("matchedDeveloperMetadata" Core..=)
+              Core.<$> matchedDeveloperMetadata
+          ]
+      )
+
+-- | Sets the basic filter associated with a sheet.
+--
+-- /See:/ 'newSetBasicFilterRequest' smart constructor.
+newtype SetBasicFilterRequest = SetBasicFilterRequest
+  { -- | The filter to set.
+    filter :: (Core.Maybe BasicFilter)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SetBasicFilterRequest' with the minimum fields required to make a request.
+newSetBasicFilterRequest ::
+  SetBasicFilterRequest
+newSetBasicFilterRequest =
+  SetBasicFilterRequest {filter = Core.Nothing}
+
+instance Core.FromJSON SetBasicFilterRequest where
+  parseJSON =
+    Core.withObject
+      "SetBasicFilterRequest"
+      (\o -> SetBasicFilterRequest Core.<$> (o Core..:? "filter"))
+
+instance Core.ToJSON SetBasicFilterRequest where
+  toJSON SetBasicFilterRequest {..} =
+    Core.object (Core.catMaybes [("filter" Core..=) Core.<$> filter])
+
+-- | Sets a data validation rule to every cell in the range. To clear validation in a range, call this with no rule specified.
+--
+-- /See:/ 'newSetDataValidationRequest' smart constructor.
+data SetDataValidationRequest = SetDataValidationRequest
+  { -- | Optional. If true, the data validation rule will be applied to the filtered rows as well.
+    filteredRowsIncluded :: (Core.Maybe Core.Bool),
+    -- | The range the data validation rule should apply to.
+    range :: (Core.Maybe GridRange),
+    -- | The data validation rule to set on each cell in the range, or empty to clear the data validation in the range.
+    rule :: (Core.Maybe DataValidationRule)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SetDataValidationRequest' with the minimum fields required to make a request.
+newSetDataValidationRequest ::
+  SetDataValidationRequest
+newSetDataValidationRequest =
+  SetDataValidationRequest
+    { filteredRowsIncluded = Core.Nothing,
+      range = Core.Nothing,
+      rule = Core.Nothing
+    }
+
+instance Core.FromJSON SetDataValidationRequest where
+  parseJSON =
+    Core.withObject
+      "SetDataValidationRequest"
+      ( \o ->
+          SetDataValidationRequest
+            Core.<$> (o Core..:? "filteredRowsIncluded")
+            Core.<*> (o Core..:? "range")
+            Core.<*> (o Core..:? "rule")
+      )
+
+instance Core.ToJSON SetDataValidationRequest where
+  toJSON SetDataValidationRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("filteredRowsIncluded" Core..=) Core.<$> filteredRowsIncluded,
+            ("range" Core..=) Core.<$> range,
+            ("rule" Core..=) Core.<$> rule
+          ]
+      )
+
+-- | A sheet in a spreadsheet.
+--
+-- /See:/ 'newSheet' smart constructor.
+data Sheet = Sheet
+  { -- | The banded (alternating colors) ranges on this sheet.
+    bandedRanges :: (Core.Maybe [BandedRange]),
+    -- | The filter on this sheet, if any.
+    basicFilter :: (Core.Maybe BasicFilter),
+    -- | The specifications of every chart on this sheet.
+    charts :: (Core.Maybe [EmbeddedChart]),
+    -- | All column groups on this sheet, ordered by increasing range start index, then by group depth.
+    columnGroups :: (Core.Maybe [DimensionGroup]),
+    -- | The conditional format rules in this sheet.
+    conditionalFormats :: (Core.Maybe [ConditionalFormatRule]),
+    -- | 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). For a DATA_SOURCE sheet, you can not request a specific range, the GridData contains all the values.
+    data' :: (Core.Maybe [GridData]),
+    -- | The developer metadata associated with a sheet.
+    developerMetadata :: (Core.Maybe [DeveloperMetadata]),
+    -- | The filter views in this sheet.
+    filterViews :: (Core.Maybe [FilterView]),
+    -- | The ranges that are merged together.
+    merges :: (Core.Maybe [GridRange]),
+    -- | The properties of the sheet.
+    properties :: (Core.Maybe SheetProperties),
+    -- | The protected ranges in this sheet.
+    protectedRanges :: (Core.Maybe [ProtectedRange]),
+    -- | All row groups on this sheet, ordered by increasing range start index, then by group depth.
+    rowGroups :: (Core.Maybe [DimensionGroup]),
+    -- | The slicers on this sheet.
+    slicers :: (Core.Maybe [Slicer])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Sheet' with the minimum fields required to make a request.
+newSheet ::
+  Sheet
+newSheet =
+  Sheet
+    { bandedRanges = Core.Nothing,
+      basicFilter = Core.Nothing,
+      charts = Core.Nothing,
+      columnGroups = Core.Nothing,
+      conditionalFormats = Core.Nothing,
+      data' = Core.Nothing,
+      developerMetadata = Core.Nothing,
+      filterViews = Core.Nothing,
+      merges = Core.Nothing,
+      properties = Core.Nothing,
+      protectedRanges = Core.Nothing,
+      rowGroups = Core.Nothing,
+      slicers = Core.Nothing
+    }
+
+instance Core.FromJSON Sheet where
+  parseJSON =
+    Core.withObject
+      "Sheet"
+      ( \o ->
+          Sheet
+            Core.<$> (o Core..:? "bandedRanges")
+            Core.<*> (o Core..:? "basicFilter")
+            Core.<*> (o Core..:? "charts")
+            Core.<*> (o Core..:? "columnGroups")
+            Core.<*> (o Core..:? "conditionalFormats")
+            Core.<*> (o Core..:? "data")
+            Core.<*> (o Core..:? "developerMetadata")
+            Core.<*> (o Core..:? "filterViews")
+            Core.<*> (o Core..:? "merges")
+            Core.<*> (o Core..:? "properties")
+            Core.<*> (o Core..:? "protectedRanges")
+            Core.<*> (o Core..:? "rowGroups")
+            Core.<*> (o Core..:? "slicers")
+      )
+
+instance Core.ToJSON Sheet where
+  toJSON Sheet {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bandedRanges" Core..=) Core.<$> bandedRanges,
+            ("basicFilter" Core..=) Core.<$> basicFilter,
+            ("charts" Core..=) Core.<$> charts,
+            ("columnGroups" Core..=) Core.<$> columnGroups,
+            ("conditionalFormats" Core..=) Core.<$> conditionalFormats,
+            ("data" Core..=) Core.<$> data',
+            ("developerMetadata" Core..=) Core.<$> developerMetadata,
+            ("filterViews" Core..=) Core.<$> filterViews,
+            ("merges" Core..=) Core.<$> merges,
+            ("properties" Core..=) Core.<$> properties,
+            ("protectedRanges" Core..=) Core.<$> protectedRanges,
+            ("rowGroups" Core..=) Core.<$> rowGroups,
+            ("slicers" Core..=) Core.<$> slicers
+          ]
+      )
+
+-- | Properties of a sheet.
+--
+-- /See:/ 'newSheetProperties' smart constructor.
+data SheetProperties = SheetProperties
+  { -- | Output only. If present, the field contains DATA_SOURCE sheet specific properties.
+    dataSourceSheetProperties :: (Core.Maybe DataSourceSheetProperties),
+    -- | 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. If this sheet is a DATA/SOURCE sheet, this field is output only but contains the properties that reflect how a data source sheet is rendered in the UI, e.g. row/count.
+    gridProperties :: (Core.Maybe GridProperties),
+    -- | True if the sheet is hidden in the UI, false if it\'s visible.
+    hidden :: (Core.Maybe Core.Bool),
+    -- | 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 three 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.
+    index :: (Core.Maybe Core.Int32),
+    -- | True if the sheet is an RTL sheet instead of an LTR sheet.
+    rightToLeft :: (Core.Maybe Core.Bool),
+    -- | The ID of the sheet. Must be non-negative. This field cannot be changed once set.
+    sheetId :: (Core.Maybe Core.Int32),
+    -- | The type of sheet. Defaults to GRID. This field cannot be changed once set.
+    sheetType :: (Core.Maybe SheetProperties_SheetType),
+    -- | The color of the tab in the UI. Deprecated: Use tab/color/style.
+    tabColor :: (Core.Maybe Color),
+    -- | The color of the tab in the UI. If tab_color is also set, this field takes precedence.
+    tabColorStyle :: (Core.Maybe ColorStyle),
+    -- | The name of the sheet.
+    title :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetProperties' with the minimum fields required to make a request.
+newSheetProperties ::
+  SheetProperties
+newSheetProperties =
+  SheetProperties
+    { dataSourceSheetProperties = Core.Nothing,
+      gridProperties = Core.Nothing,
+      hidden = Core.Nothing,
+      index = Core.Nothing,
+      rightToLeft = Core.Nothing,
+      sheetId = Core.Nothing,
+      sheetType = Core.Nothing,
+      tabColor = Core.Nothing,
+      tabColorStyle = Core.Nothing,
+      title = Core.Nothing
+    }
+
+instance Core.FromJSON SheetProperties where
+  parseJSON =
+    Core.withObject
+      "SheetProperties"
+      ( \o ->
+          SheetProperties
+            Core.<$> (o Core..:? "dataSourceSheetProperties")
+            Core.<*> (o Core..:? "gridProperties")
+            Core.<*> (o Core..:? "hidden")
+            Core.<*> (o Core..:? "index")
+            Core.<*> (o Core..:? "rightToLeft")
+            Core.<*> (o Core..:? "sheetId")
+            Core.<*> (o Core..:? "sheetType")
+            Core.<*> (o Core..:? "tabColor")
+            Core.<*> (o Core..:? "tabColorStyle")
+            Core.<*> (o Core..:? "title")
+      )
+
+instance Core.ToJSON SheetProperties where
+  toJSON SheetProperties {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceSheetProperties" Core..=)
+              Core.<$> dataSourceSheetProperties,
+            ("gridProperties" Core..=) Core.<$> gridProperties,
+            ("hidden" Core..=) Core.<$> hidden,
+            ("index" Core..=) Core.<$> index,
+            ("rightToLeft" Core..=) Core.<$> rightToLeft,
+            ("sheetId" Core..=) Core.<$> sheetId,
+            ("sheetType" Core..=) Core.<$> sheetType,
+            ("tabColor" Core..=) Core.<$> tabColor,
+            ("tabColorStyle" Core..=) Core.<$> tabColorStyle,
+            ("title" Core..=) Core.<$> title
+          ]
+      )
+
+-- | A slicer in a sheet.
+--
+-- /See:/ 'newSlicer' smart constructor.
+data Slicer = Slicer
+  { -- | The position of the slicer. Note that slicer can be positioned only on existing sheet. Also, width and height of slicer can be automatically adjusted to keep it within permitted limits.
+    position :: (Core.Maybe EmbeddedObjectPosition),
+    -- | The ID of the slicer.
+    slicerId :: (Core.Maybe Core.Int32),
+    -- | The specification of the slicer.
+    spec :: (Core.Maybe SlicerSpec)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Slicer' with the minimum fields required to make a request.
+newSlicer ::
+  Slicer
+newSlicer =
+  Slicer
+    { position = Core.Nothing,
+      slicerId = Core.Nothing,
+      spec = Core.Nothing
+    }
+
+instance Core.FromJSON Slicer where
+  parseJSON =
+    Core.withObject
+      "Slicer"
+      ( \o ->
+          Slicer
+            Core.<$> (o Core..:? "position")
+            Core.<*> (o Core..:? "slicerId")
+            Core.<*> (o Core..:? "spec")
+      )
+
+instance Core.ToJSON Slicer where
+  toJSON Slicer {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("position" Core..=) Core.<$> position,
+            ("slicerId" Core..=) Core.<$> slicerId,
+            ("spec" Core..=) Core.<$> spec
+          ]
+      )
+
+-- | The specifications of a slicer.
+--
+-- /See:/ 'newSlicerSpec' smart constructor.
+data SlicerSpec = SlicerSpec
+  { -- | True if the filter should apply to pivot tables. If not set, default to @True@.
+    applyToPivotTables :: (Core.Maybe Core.Bool),
+    -- | The background color of the slicer. Deprecated: Use background/color/style.
+    backgroundColor :: (Core.Maybe Color),
+    -- | The background color of the slicer. If background_color is also set, this field takes precedence.
+    backgroundColorStyle :: (Core.Maybe ColorStyle),
+    -- | The zero-based column index in the data table on which the filter is applied to.
+    columnIndex :: (Core.Maybe Core.Int32),
+    -- | The data range of the slicer.
+    dataRange :: (Core.Maybe GridRange),
+    -- | The filtering criteria of the slicer.
+    filterCriteria :: (Core.Maybe FilterCriteria),
+    -- | The horizontal alignment of title in the slicer. If unspecified, defaults to @LEFT@
+    horizontalAlignment :: (Core.Maybe SlicerSpec_HorizontalAlignment),
+    -- | The text format of title in the slicer. The link field is not supported.
+    textFormat :: (Core.Maybe TextFormat),
+    -- | The title of the slicer.
+    title :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SlicerSpec' with the minimum fields required to make a request.
+newSlicerSpec ::
+  SlicerSpec
+newSlicerSpec =
+  SlicerSpec
+    { applyToPivotTables = Core.Nothing,
+      backgroundColor = Core.Nothing,
+      backgroundColorStyle = Core.Nothing,
+      columnIndex = Core.Nothing,
+      dataRange = Core.Nothing,
+      filterCriteria = Core.Nothing,
+      horizontalAlignment = Core.Nothing,
+      textFormat = Core.Nothing,
+      title = Core.Nothing
+    }
+
+instance Core.FromJSON SlicerSpec where
+  parseJSON =
+    Core.withObject
+      "SlicerSpec"
+      ( \o ->
+          SlicerSpec
+            Core.<$> (o Core..:? "applyToPivotTables")
+            Core.<*> (o Core..:? "backgroundColor")
+            Core.<*> (o Core..:? "backgroundColorStyle")
+            Core.<*> (o Core..:? "columnIndex")
+            Core.<*> (o Core..:? "dataRange")
+            Core.<*> (o Core..:? "filterCriteria")
+            Core.<*> (o Core..:? "horizontalAlignment")
+            Core.<*> (o Core..:? "textFormat")
+            Core.<*> (o Core..:? "title")
+      )
+
+instance Core.ToJSON SlicerSpec where
+  toJSON SlicerSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("applyToPivotTables" Core..=) Core.<$> applyToPivotTables,
+            ("backgroundColor" Core..=) Core.<$> backgroundColor,
+            ("backgroundColorStyle" Core..=) Core.<$> backgroundColorStyle,
+            ("columnIndex" Core..=) Core.<$> columnIndex,
+            ("dataRange" Core..=) Core.<$> dataRange,
+            ("filterCriteria" Core..=) Core.<$> filterCriteria,
+            ("horizontalAlignment" Core..=) Core.<$> horizontalAlignment,
+            ("textFormat" Core..=) Core.<$> textFormat,
+            ("title" Core..=) Core.<$> title
+          ]
+      )
+
+-- | Sorts data in rows based on a sort order per column.
+--
+-- /See:/ 'newSortRangeRequest' smart constructor.
+data SortRangeRequest = SortRangeRequest
+  { -- | The range to sort.
+    range :: (Core.Maybe GridRange),
+    -- | The sort order per column. Later specifications are used when values are equal in the earlier specifications.
+    sortSpecs :: (Core.Maybe [SortSpec])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SortRangeRequest' with the minimum fields required to make a request.
+newSortRangeRequest ::
+  SortRangeRequest
+newSortRangeRequest =
+  SortRangeRequest {range = Core.Nothing, sortSpecs = Core.Nothing}
+
+instance Core.FromJSON SortRangeRequest where
+  parseJSON =
+    Core.withObject
+      "SortRangeRequest"
+      ( \o ->
+          SortRangeRequest
+            Core.<$> (o Core..:? "range")
+            Core.<*> (o Core..:? "sortSpecs")
+      )
+
+instance Core.ToJSON SortRangeRequest where
+  toJSON SortRangeRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("range" Core..=) Core.<$> range,
+            ("sortSpecs" Core..=) Core.<$> sortSpecs
+          ]
+      )
+
+-- | A sort order associated with a specific column or row.
+--
+-- /See:/ 'newSortSpec' smart constructor.
+data SortSpec = SortSpec
+  { -- | The background fill color to sort by; cells with this fill color are sorted to the top. Mutually exclusive with foreground/color. Deprecated: Use background/color_style.
+    backgroundColor :: (Core.Maybe Color),
+    -- | The background fill color to sort by; cells with this fill color are sorted to the top. Mutually exclusive with foreground/color, and must be an RGB-type color. If background/color is also set, this field takes precedence.
+    backgroundColorStyle :: (Core.Maybe ColorStyle),
+    -- | Reference to a data source column.
+    dataSourceColumnReference :: (Core.Maybe DataSourceColumnReference),
+    -- | The dimension the sort should be applied to.
+    dimensionIndex :: (Core.Maybe Core.Int32),
+    -- | The foreground color to sort by; cells with this foreground color are sorted to the top. Mutually exclusive with background/color. Deprecated: Use foreground/color_style.
+    foregroundColor :: (Core.Maybe Color),
+    -- | The foreground color to sort by; cells with this foreground color are sorted to the top. Mutually exclusive with background/color, and must be an RGB-type color. If foreground/color is also set, this field takes precedence.
+    foregroundColorStyle :: (Core.Maybe ColorStyle),
+    -- | The order data should be sorted.
+    sortOrder :: (Core.Maybe SortSpec_SortOrder)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SortSpec' with the minimum fields required to make a request.
+newSortSpec ::
+  SortSpec
+newSortSpec =
+  SortSpec
+    { backgroundColor = Core.Nothing,
+      backgroundColorStyle = Core.Nothing,
+      dataSourceColumnReference = Core.Nothing,
+      dimensionIndex = Core.Nothing,
+      foregroundColor = Core.Nothing,
+      foregroundColorStyle = Core.Nothing,
+      sortOrder = Core.Nothing
+    }
+
+instance Core.FromJSON SortSpec where
+  parseJSON =
+    Core.withObject
+      "SortSpec"
+      ( \o ->
+          SortSpec
+            Core.<$> (o Core..:? "backgroundColor")
+            Core.<*> (o Core..:? "backgroundColorStyle")
+            Core.<*> (o Core..:? "dataSourceColumnReference")
+            Core.<*> (o Core..:? "dimensionIndex")
+            Core.<*> (o Core..:? "foregroundColor")
+            Core.<*> (o Core..:? "foregroundColorStyle")
+            Core.<*> (o Core..:? "sortOrder")
+      )
+
+instance Core.ToJSON SortSpec where
+  toJSON SortSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("backgroundColor" Core..=) Core.<$> backgroundColor,
+            ("backgroundColorStyle" Core..=) Core.<$> backgroundColorStyle,
+            ("dataSourceColumnReference" Core..=)
+              Core.<$> dataSourceColumnReference,
+            ("dimensionIndex" Core..=) Core.<$> dimensionIndex,
+            ("foregroundColor" Core..=) Core.<$> foregroundColor,
+            ("foregroundColorStyle" Core..=) Core.<$> foregroundColorStyle,
+            ("sortOrder" Core..=) Core.<$> sortOrder
+          ]
+      )
+
+-- | A combination of a source range and how to extend that source.
+--
+-- /See:/ 'newSourceAndDestination' smart constructor.
+data SourceAndDestination = SourceAndDestination
+  { -- | The dimension that data should be filled into.
+    dimension :: (Core.Maybe SourceAndDestination_Dimension),
+    -- | 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.
+    fillLength :: (Core.Maybe Core.Int32),
+    -- | The location of the data to use as the source of the autofill.
+    source :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SourceAndDestination' with the minimum fields required to make a request.
+newSourceAndDestination ::
+  SourceAndDestination
+newSourceAndDestination =
+  SourceAndDestination
+    { dimension = Core.Nothing,
+      fillLength = Core.Nothing,
+      source = Core.Nothing
+    }
+
+instance Core.FromJSON SourceAndDestination where
+  parseJSON =
+    Core.withObject
+      "SourceAndDestination"
+      ( \o ->
+          SourceAndDestination
+            Core.<$> (o Core..:? "dimension")
+            Core.<*> (o Core..:? "fillLength")
+            Core.<*> (o Core..:? "source")
+      )
+
+instance Core.ToJSON SourceAndDestination where
+  toJSON SourceAndDestination {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dimension" Core..=) Core.<$> dimension,
+            ("fillLength" Core..=) Core.<$> fillLength,
+            ("source" Core..=) Core.<$> source
+          ]
+      )
+
+-- | Resource that represents a spreadsheet.
+--
+-- /See:/ 'newSpreadsheet' smart constructor.
+data Spreadsheet = Spreadsheet
+  { -- | Output only. A list of data source refresh schedules.
+    dataSourceSchedules :: (Core.Maybe [DataSourceRefreshSchedule]),
+    -- | A list of external data sources connected with the spreadsheet.
+    dataSources :: (Core.Maybe [DataSource]),
+    -- | The developer metadata associated with a spreadsheet.
+    developerMetadata :: (Core.Maybe [DeveloperMetadata]),
+    -- | The named ranges defined in a spreadsheet.
+    namedRanges :: (Core.Maybe [NamedRange]),
+    -- | Overall properties of a spreadsheet.
+    properties :: (Core.Maybe SpreadsheetProperties),
+    -- | The sheets that are part of a spreadsheet.
+    sheets :: (Core.Maybe [Sheet]),
+    -- | The ID of the spreadsheet. This field is read-only.
+    spreadsheetId :: (Core.Maybe Core.Text),
+    -- | The url of the spreadsheet. This field is read-only.
+    spreadsheetUrl :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Spreadsheet' with the minimum fields required to make a request.
+newSpreadsheet ::
+  Spreadsheet
+newSpreadsheet =
+  Spreadsheet
+    { dataSourceSchedules = Core.Nothing,
+      dataSources = Core.Nothing,
+      developerMetadata = Core.Nothing,
+      namedRanges = Core.Nothing,
+      properties = Core.Nothing,
+      sheets = Core.Nothing,
+      spreadsheetId = Core.Nothing,
+      spreadsheetUrl = Core.Nothing
+    }
+
+instance Core.FromJSON Spreadsheet where
+  parseJSON =
+    Core.withObject
+      "Spreadsheet"
+      ( \o ->
+          Spreadsheet
+            Core.<$> (o Core..:? "dataSourceSchedules")
+            Core.<*> (o Core..:? "dataSources")
+            Core.<*> (o Core..:? "developerMetadata")
+            Core.<*> (o Core..:? "namedRanges")
+            Core.<*> (o Core..:? "properties")
+            Core.<*> (o Core..:? "sheets")
+            Core.<*> (o Core..:? "spreadsheetId")
+            Core.<*> (o Core..:? "spreadsheetUrl")
+      )
+
+instance Core.ToJSON Spreadsheet where
+  toJSON Spreadsheet {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceSchedules" Core..=) Core.<$> dataSourceSchedules,
+            ("dataSources" Core..=) Core.<$> dataSources,
+            ("developerMetadata" Core..=) Core.<$> developerMetadata,
+            ("namedRanges" Core..=) Core.<$> namedRanges,
+            ("properties" Core..=) Core.<$> properties,
+            ("sheets" Core..=) Core.<$> sheets,
+            ("spreadsheetId" Core..=) Core.<$> spreadsheetId,
+            ("spreadsheetUrl" Core..=) Core.<$> spreadsheetUrl
+          ]
+      )
+
+-- | Properties of a spreadsheet.
+--
+-- /See:/ 'newSpreadsheetProperties' smart constructor.
+data SpreadsheetProperties = SpreadsheetProperties
+  { -- | The amount of time to wait before volatile functions are recalculated.
+    autoRecalc :: (Core.Maybe SpreadsheetProperties_AutoRecalc),
+    -- | 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.
+    defaultFormat :: (Core.Maybe CellFormat),
+    -- | Whether to allow external URL access for image and import functions. Read only when true. When false, you can set to true. This value will be bypassed and always return true if the admin has enabled the <https://support.google.com/a?p=url_allowlist allowlisting feature>.
+    importFunctionsExternalUrlAccessAllowed :: (Core.Maybe Core.Bool),
+    -- | Determines whether and how circular references are resolved with iterative calculation. Absence of this field means that circular references result in calculation errors.
+    iterativeCalculationSettings :: (Core.Maybe IterativeCalculationSettings),
+    -- | 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.
+    locale :: (Core.Maybe Core.Text),
+    -- | Theme applied to the spreadsheet.
+    spreadsheetTheme :: (Core.Maybe SpreadsheetTheme),
+    -- | 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@.
+    timeZone :: (Core.Maybe Core.Text),
+    -- | The title of the spreadsheet.
+    title :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SpreadsheetProperties' with the minimum fields required to make a request.
+newSpreadsheetProperties ::
+  SpreadsheetProperties
+newSpreadsheetProperties =
+  SpreadsheetProperties
+    { autoRecalc = Core.Nothing,
+      defaultFormat = Core.Nothing,
+      importFunctionsExternalUrlAccessAllowed = Core.Nothing,
+      iterativeCalculationSettings = Core.Nothing,
+      locale = Core.Nothing,
+      spreadsheetTheme = Core.Nothing,
+      timeZone = Core.Nothing,
+      title = Core.Nothing
+    }
+
+instance Core.FromJSON SpreadsheetProperties where
+  parseJSON =
+    Core.withObject
+      "SpreadsheetProperties"
+      ( \o ->
+          SpreadsheetProperties
+            Core.<$> (o Core..:? "autoRecalc")
+            Core.<*> (o Core..:? "defaultFormat")
+            Core.<*> (o Core..:? "importFunctionsExternalUrlAccessAllowed")
+            Core.<*> (o Core..:? "iterativeCalculationSettings")
+            Core.<*> (o Core..:? "locale")
+            Core.<*> (o Core..:? "spreadsheetTheme")
+            Core.<*> (o Core..:? "timeZone")
+            Core.<*> (o Core..:? "title")
+      )
+
+instance Core.ToJSON SpreadsheetProperties where
+  toJSON SpreadsheetProperties {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("autoRecalc" Core..=) Core.<$> autoRecalc,
+            ("defaultFormat" Core..=) Core.<$> defaultFormat,
+            ("importFunctionsExternalUrlAccessAllowed" Core..=)
+              Core.<$> importFunctionsExternalUrlAccessAllowed,
+            ("iterativeCalculationSettings" Core..=)
+              Core.<$> iterativeCalculationSettings,
+            ("locale" Core..=) Core.<$> locale,
+            ("spreadsheetTheme" Core..=) Core.<$> spreadsheetTheme,
+            ("timeZone" Core..=) Core.<$> timeZone,
+            ("title" Core..=) Core.<$> title
+          ]
+      )
+
+-- | Represents spreadsheet theme
+--
+-- /See:/ 'newSpreadsheetTheme' smart constructor.
+data SpreadsheetTheme = SpreadsheetTheme
+  { -- | Name of the primary font family.
+    primaryFontFamily :: (Core.Maybe Core.Text),
+    -- | The spreadsheet theme color pairs. To update you must provide all theme color pairs.
+    themeColors :: (Core.Maybe [ThemeColorPair])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SpreadsheetTheme' with the minimum fields required to make a request.
+newSpreadsheetTheme ::
+  SpreadsheetTheme
+newSpreadsheetTheme =
+  SpreadsheetTheme
+    { primaryFontFamily = Core.Nothing,
+      themeColors = Core.Nothing
+    }
+
+instance Core.FromJSON SpreadsheetTheme where
+  parseJSON =
+    Core.withObject
+      "SpreadsheetTheme"
+      ( \o ->
+          SpreadsheetTheme
+            Core.<$> (o Core..:? "primaryFontFamily")
+            Core.<*> (o Core..:? "themeColors")
+      )
+
+instance Core.ToJSON SpreadsheetTheme where
+  toJSON SpreadsheetTheme {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("primaryFontFamily" Core..=) Core.<$> primaryFontFamily,
+            ("themeColors" Core..=) Core.<$> themeColors
+          ]
+      )
+
+-- | The format of a run of text in a cell. Absent values indicate that the field isn\'t specified.
+--
+-- /See:/ 'newTextFormat' smart constructor.
+data TextFormat = TextFormat
+  { -- | True if the text is bold.
+    bold :: (Core.Maybe Core.Bool),
+    -- | The font family.
+    fontFamily :: (Core.Maybe Core.Text),
+    -- | The size of the font.
+    fontSize :: (Core.Maybe Core.Int32),
+    -- | The foreground color of the text. Deprecated: Use foreground/color/style.
+    foregroundColor :: (Core.Maybe Color),
+    -- | The foreground color of the text. If foreground_color is also set, this field takes precedence.
+    foregroundColorStyle :: (Core.Maybe ColorStyle),
+    -- | True if the text is italicized.
+    italic :: (Core.Maybe Core.Bool),
+    -- | The link destination of the text, if any. Setting the link field in a TextFormatRun will clear the cell\'s existing links or a cell-level link set in the same request. When a link is set, the text foreground color will be set to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults.
+    link :: (Core.Maybe Link),
+    -- | True if the text has a strikethrough.
+    strikethrough :: (Core.Maybe Core.Bool),
+    -- | True if the text is underlined.
+    underline :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TextFormat' with the minimum fields required to make a request.
+newTextFormat ::
+  TextFormat
+newTextFormat =
+  TextFormat
+    { bold = Core.Nothing,
+      fontFamily = Core.Nothing,
+      fontSize = Core.Nothing,
+      foregroundColor = Core.Nothing,
+      foregroundColorStyle = Core.Nothing,
+      italic = Core.Nothing,
+      link = Core.Nothing,
+      strikethrough = Core.Nothing,
+      underline = Core.Nothing
+    }
+
+instance Core.FromJSON TextFormat where
+  parseJSON =
+    Core.withObject
+      "TextFormat"
+      ( \o ->
+          TextFormat
+            Core.<$> (o Core..:? "bold")
+            Core.<*> (o Core..:? "fontFamily")
+            Core.<*> (o Core..:? "fontSize")
+            Core.<*> (o Core..:? "foregroundColor")
+            Core.<*> (o Core..:? "foregroundColorStyle")
+            Core.<*> (o Core..:? "italic")
+            Core.<*> (o Core..:? "link")
+            Core.<*> (o Core..:? "strikethrough")
+            Core.<*> (o Core..:? "underline")
+      )
+
+instance Core.ToJSON TextFormat where
+  toJSON TextFormat {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bold" Core..=) Core.<$> bold,
+            ("fontFamily" Core..=) Core.<$> fontFamily,
+            ("fontSize" Core..=) Core.<$> fontSize,
+            ("foregroundColor" Core..=) Core.<$> foregroundColor,
+            ("foregroundColorStyle" Core..=) Core.<$> foregroundColorStyle,
+            ("italic" Core..=) Core.<$> italic,
+            ("link" Core..=) Core.<$> link,
+            ("strikethrough" Core..=) Core.<$> strikethrough,
+            ("underline" Core..=) Core.<$> underline
+          ]
+      )
+
+-- | 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:/ 'newTextFormatRun' smart constructor.
+data TextFormatRun = TextFormatRun
+  { -- | The format of this run. Absent values inherit the cell\'s format.
+    format :: (Core.Maybe TextFormat),
+    -- | The zero-based character index where this run starts, in UTF-16 code units.
+    startIndex :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TextFormatRun' with the minimum fields required to make a request.
+newTextFormatRun ::
+  TextFormatRun
+newTextFormatRun =
+  TextFormatRun {format = Core.Nothing, startIndex = Core.Nothing}
+
+instance Core.FromJSON TextFormatRun where
+  parseJSON =
+    Core.withObject
+      "TextFormatRun"
+      ( \o ->
+          TextFormatRun
+            Core.<$> (o Core..:? "format")
+            Core.<*> (o Core..:? "startIndex")
+      )
+
+instance Core.ToJSON TextFormatRun where
+  toJSON TextFormatRun {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("format" Core..=) Core.<$> format,
+            ("startIndex" Core..=) Core.<$> startIndex
+          ]
+      )
+
+-- | Position settings for text.
+--
+-- /See:/ 'newTextPosition' smart constructor.
+newtype TextPosition = TextPosition
+  { -- | Horizontal alignment setting for the piece of text.
+    horizontalAlignment :: (Core.Maybe TextPosition_HorizontalAlignment)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TextPosition' with the minimum fields required to make a request.
+newTextPosition ::
+  TextPosition
+newTextPosition = TextPosition {horizontalAlignment = Core.Nothing}
+
+instance Core.FromJSON TextPosition where
+  parseJSON =
+    Core.withObject
+      "TextPosition"
+      (\o -> TextPosition Core.<$> (o Core..:? "horizontalAlignment"))
+
+instance Core.ToJSON TextPosition where
+  toJSON TextPosition {..} =
+    Core.object
+      ( Core.catMaybes
+          [("horizontalAlignment" Core..=) Core.<$> horizontalAlignment]
+      )
+
+-- | The rotation applied to text in a cell.
+--
+-- /See:/ 'newTextRotation' smart constructor.
+data TextRotation = TextRotation
+  { -- | 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
+    angle :: (Core.Maybe Core.Int32),
+    -- | 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 |
+    vertical :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TextRotation' with the minimum fields required to make a request.
+newTextRotation ::
+  TextRotation
+newTextRotation =
+  TextRotation {angle = Core.Nothing, vertical = Core.Nothing}
+
+instance Core.FromJSON TextRotation where
+  parseJSON =
+    Core.withObject
+      "TextRotation"
+      ( \o ->
+          TextRotation
+            Core.<$> (o Core..:? "angle")
+            Core.<*> (o Core..:? "vertical")
+      )
+
+instance Core.ToJSON TextRotation where
+  toJSON TextRotation {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("angle" Core..=) Core.<$> angle,
+            ("vertical" Core..=) Core.<$> vertical
+          ]
+      )
+
+-- | Splits a column of text into multiple columns, based on a delimiter in each cell.
+--
+-- /See:/ 'newTextToColumnsRequest' smart constructor.
+data TextToColumnsRequest = TextToColumnsRequest
+  { -- | The delimiter to use. Used only if delimiterType is CUSTOM.
+    delimiter :: (Core.Maybe Core.Text),
+    -- | The delimiter type to use.
+    delimiterType :: (Core.Maybe TextToColumnsRequest_DelimiterType),
+    -- | The source data range. This must span exactly one column.
+    source :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TextToColumnsRequest' with the minimum fields required to make a request.
+newTextToColumnsRequest ::
+  TextToColumnsRequest
+newTextToColumnsRequest =
+  TextToColumnsRequest
+    { delimiter = Core.Nothing,
+      delimiterType = Core.Nothing,
+      source = Core.Nothing
+    }
+
+instance Core.FromJSON TextToColumnsRequest where
+  parseJSON =
+    Core.withObject
+      "TextToColumnsRequest"
+      ( \o ->
+          TextToColumnsRequest
+            Core.<$> (o Core..:? "delimiter")
+            Core.<*> (o Core..:? "delimiterType")
+            Core.<*> (o Core..:? "source")
+      )
+
+instance Core.ToJSON TextToColumnsRequest where
+  toJSON TextToColumnsRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("delimiter" Core..=) Core.<$> delimiter,
+            ("delimiterType" Core..=) Core.<$> delimiterType,
+            ("source" Core..=) Core.<$> source
+          ]
+      )
+
+-- | A pair mapping a spreadsheet theme color type to the concrete color it represents.
+--
+-- /See:/ 'newThemeColorPair' smart constructor.
+data ThemeColorPair = ThemeColorPair
+  { -- | The concrete color corresponding to the theme color type.
+    color :: (Core.Maybe ColorStyle),
+    -- | The type of the spreadsheet theme color.
+    colorType :: (Core.Maybe ThemeColorPair_ColorType)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ThemeColorPair' with the minimum fields required to make a request.
+newThemeColorPair ::
+  ThemeColorPair
+newThemeColorPair =
+  ThemeColorPair {color = Core.Nothing, colorType = Core.Nothing}
+
+instance Core.FromJSON ThemeColorPair where
+  parseJSON =
+    Core.withObject
+      "ThemeColorPair"
+      ( \o ->
+          ThemeColorPair
+            Core.<$> (o Core..:? "color")
+            Core.<*> (o Core..:? "colorType")
+      )
+
+instance Core.ToJSON ThemeColorPair where
+  toJSON ThemeColorPair {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("color" Core..=) Core.<$> color,
+            ("colorType" Core..=) Core.<$> colorType
+          ]
+      )
+
+-- | Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and @google.protobuf.Timestamp@.
+--
+-- /See:/ 'newTimeOfDay' smart constructor.
+data TimeOfDay' = TimeOfDay'
+  { -- | Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.
+    hours :: (Core.Maybe Core.Int32),
+    -- | Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
+    minutes :: (Core.Maybe Core.Int32),
+    -- | Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
+    nanos :: (Core.Maybe Core.Int32),
+    -- | Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
+    seconds :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TimeOfDay' with the minimum fields required to make a request.
+newTimeOfDay ::
+  TimeOfDay'
+newTimeOfDay =
+  TimeOfDay'
+    { hours = Core.Nothing,
+      minutes = Core.Nothing,
+      nanos = Core.Nothing,
+      seconds = Core.Nothing
+    }
+
+instance Core.FromJSON TimeOfDay' where
+  parseJSON =
+    Core.withObject
+      "TimeOfDay'"
+      ( \o ->
+          TimeOfDay'
+            Core.<$> (o Core..:? "hours")
+            Core.<*> (o Core..:? "minutes")
+            Core.<*> (o Core..:? "nanos")
+            Core.<*> (o Core..:? "seconds")
+      )
+
+instance Core.ToJSON TimeOfDay' where
+  toJSON TimeOfDay' {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("hours" Core..=) Core.<$> hours,
+            ("minutes" Core..=) Core.<$> minutes,
+            ("nanos" Core..=) Core.<$> nanos,
+            ("seconds" Core..=) Core.<$> seconds
+          ]
+      )
+
+-- | A color scale for a treemap chart.
+--
+-- /See:/ 'newTreemapChartColorScale' smart constructor.
+data TreemapChartColorScale = TreemapChartColorScale
+  { -- | The background color for cells with a color value greater than or equal to maxValue. Defaults to #109618 if not specified. Deprecated: Use max/value/color_style.
+    maxValueColor :: (Core.Maybe Color),
+    -- | The background color for cells with a color value greater than or equal to maxValue. Defaults to #109618 if not specified. If max/value/color is also set, this field takes precedence.
+    maxValueColorStyle :: (Core.Maybe ColorStyle),
+    -- | The background color for cells with a color value at the midpoint between minValue and maxValue. Defaults to #efe6dc if not specified. Deprecated: Use mid/value/color_style.
+    midValueColor :: (Core.Maybe Color),
+    -- | The background color for cells with a color value at the midpoint between minValue and maxValue. Defaults to #efe6dc if not specified. If mid/value/color is also set, this field takes precedence.
+    midValueColorStyle :: (Core.Maybe ColorStyle),
+    -- | The background color for cells with a color value less than or equal to minValue. Defaults to #dc3912 if not specified. Deprecated: Use min/value/color_style.
+    minValueColor :: (Core.Maybe Color),
+    -- | The background color for cells with a color value less than or equal to minValue. Defaults to #dc3912 if not specified. If min/value/color is also set, this field takes precedence.
+    minValueColorStyle :: (Core.Maybe ColorStyle),
+    -- | The background color for cells that have no color data associated with them. Defaults to #000000 if not specified. Deprecated: Use no/data/color_style.
+    noDataColor :: (Core.Maybe Color),
+    -- | The background color for cells that have no color data associated with them. Defaults to #000000 if not specified. If no/data/color is also set, this field takes precedence.
+    noDataColorStyle :: (Core.Maybe ColorStyle)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TreemapChartColorScale' with the minimum fields required to make a request.
+newTreemapChartColorScale ::
+  TreemapChartColorScale
+newTreemapChartColorScale =
+  TreemapChartColorScale
+    { maxValueColor = Core.Nothing,
+      maxValueColorStyle = Core.Nothing,
+      midValueColor = Core.Nothing,
+      midValueColorStyle = Core.Nothing,
+      minValueColor = Core.Nothing,
+      minValueColorStyle = Core.Nothing,
+      noDataColor = Core.Nothing,
+      noDataColorStyle = Core.Nothing
+    }
+
+instance Core.FromJSON TreemapChartColorScale where
+  parseJSON =
+    Core.withObject
+      "TreemapChartColorScale"
+      ( \o ->
+          TreemapChartColorScale
+            Core.<$> (o Core..:? "maxValueColor")
+            Core.<*> (o Core..:? "maxValueColorStyle")
+            Core.<*> (o Core..:? "midValueColor")
+            Core.<*> (o Core..:? "midValueColorStyle")
+            Core.<*> (o Core..:? "minValueColor")
+            Core.<*> (o Core..:? "minValueColorStyle")
+            Core.<*> (o Core..:? "noDataColor")
+            Core.<*> (o Core..:? "noDataColorStyle")
+      )
+
+instance Core.ToJSON TreemapChartColorScale where
+  toJSON TreemapChartColorScale {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("maxValueColor" Core..=) Core.<$> maxValueColor,
+            ("maxValueColorStyle" Core..=) Core.<$> maxValueColorStyle,
+            ("midValueColor" Core..=) Core.<$> midValueColor,
+            ("midValueColorStyle" Core..=) Core.<$> midValueColorStyle,
+            ("minValueColor" Core..=) Core.<$> minValueColor,
+            ("minValueColorStyle" Core..=) Core.<$> minValueColorStyle,
+            ("noDataColor" Core..=) Core.<$> noDataColor,
+            ("noDataColorStyle" Core..=) Core.<$> noDataColorStyle
+          ]
+      )
+
+-- | A Treemap chart.
+--
+-- /See:/ 'newTreemapChartSpec' smart constructor.
+data TreemapChartSpec = TreemapChartSpec
+  { -- | 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.
+    colorData :: (Core.Maybe ChartData),
+    -- | 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.
+    colorScale :: (Core.Maybe TreemapChartColorScale),
+    -- | The background color for header cells. Deprecated: Use header/color/style.
+    headerColor :: (Core.Maybe Color),
+    -- | The background color for header cells. If header_color is also set, this field takes precedence.
+    headerColorStyle :: (Core.Maybe ColorStyle),
+    -- | True to hide tooltips.
+    hideTooltips :: (Core.Maybe Core.Bool),
+    -- | 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.
+    hintedLevels :: (Core.Maybe Core.Int32),
+    -- | The data that contains the treemap cell labels.
+    labels :: (Core.Maybe ChartData),
+    -- | 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.
+    levels :: (Core.Maybe Core.Int32),
+    -- | 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.
+    maxValue :: (Core.Maybe Core.Double),
+    -- | 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.
+    minValue :: (Core.Maybe Core.Double),
+    -- | The data the contains the treemap cells\' parent labels.
+    parentLabels :: (Core.Maybe ChartData),
+    -- | 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.
+    sizeData :: (Core.Maybe ChartData),
+    -- | The text format for all labels on the chart. The link field is not supported.
+    textFormat :: (Core.Maybe TextFormat)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TreemapChartSpec' with the minimum fields required to make a request.
+newTreemapChartSpec ::
+  TreemapChartSpec
+newTreemapChartSpec =
+  TreemapChartSpec
+    { colorData = Core.Nothing,
+      colorScale = Core.Nothing,
+      headerColor = Core.Nothing,
+      headerColorStyle = Core.Nothing,
+      hideTooltips = Core.Nothing,
+      hintedLevels = Core.Nothing,
+      labels = Core.Nothing,
+      levels = Core.Nothing,
+      maxValue = Core.Nothing,
+      minValue = Core.Nothing,
+      parentLabels = Core.Nothing,
+      sizeData = Core.Nothing,
+      textFormat = Core.Nothing
+    }
+
+instance Core.FromJSON TreemapChartSpec where
+  parseJSON =
+    Core.withObject
+      "TreemapChartSpec"
+      ( \o ->
+          TreemapChartSpec
+            Core.<$> (o Core..:? "colorData")
+            Core.<*> (o Core..:? "colorScale")
+            Core.<*> (o Core..:? "headerColor")
+            Core.<*> (o Core..:? "headerColorStyle")
+            Core.<*> (o Core..:? "hideTooltips")
+            Core.<*> (o Core..:? "hintedLevels")
+            Core.<*> (o Core..:? "labels")
+            Core.<*> (o Core..:? "levels")
+            Core.<*> (o Core..:? "maxValue")
+            Core.<*> (o Core..:? "minValue")
+            Core.<*> (o Core..:? "parentLabels")
+            Core.<*> (o Core..:? "sizeData")
+            Core.<*> (o Core..:? "textFormat")
+      )
+
+instance Core.ToJSON TreemapChartSpec where
+  toJSON TreemapChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("colorData" Core..=) Core.<$> colorData,
+            ("colorScale" Core..=) Core.<$> colorScale,
+            ("headerColor" Core..=) Core.<$> headerColor,
+            ("headerColorStyle" Core..=) Core.<$> headerColorStyle,
+            ("hideTooltips" Core..=) Core.<$> hideTooltips,
+            ("hintedLevels" Core..=) Core.<$> hintedLevels,
+            ("labels" Core..=) Core.<$> labels,
+            ("levels" Core..=) Core.<$> levels,
+            ("maxValue" Core..=) Core.<$> maxValue,
+            ("minValue" Core..=) Core.<$> minValue,
+            ("parentLabels" Core..=) Core.<$> parentLabels,
+            ("sizeData" Core..=) Core.<$> sizeData,
+            ("textFormat" Core..=) Core.<$> textFormat
+          ]
+      )
+
+-- | Trims the whitespace (such as spaces, tabs, or new lines) in every cell in the specified range. This request removes all whitespace from the start and end of each cell\'s text, and reduces any subsequence of remaining whitespace characters to a single space. If the resulting trimmed text starts with a \'+\' or \'=\' character, the text remains as a string value and isn\'t interpreted as a formula.
+--
+-- /See:/ 'newTrimWhitespaceRequest' smart constructor.
+newtype TrimWhitespaceRequest = TrimWhitespaceRequest
+  { -- | The range whose cells to trim.
+    range :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TrimWhitespaceRequest' with the minimum fields required to make a request.
+newTrimWhitespaceRequest ::
+  TrimWhitespaceRequest
+newTrimWhitespaceRequest =
+  TrimWhitespaceRequest {range = Core.Nothing}
+
+instance Core.FromJSON TrimWhitespaceRequest where
+  parseJSON =
+    Core.withObject
+      "TrimWhitespaceRequest"
+      (\o -> TrimWhitespaceRequest Core.<$> (o Core..:? "range"))
+
+instance Core.ToJSON TrimWhitespaceRequest where
+  toJSON TrimWhitespaceRequest {..} =
+    Core.object (Core.catMaybes [("range" Core..=) Core.<$> range])
+
+-- | The result of trimming whitespace in cells.
+--
+-- /See:/ 'newTrimWhitespaceResponse' smart constructor.
+newtype TrimWhitespaceResponse = TrimWhitespaceResponse
+  { -- | The number of cells that were trimmed of whitespace.
+    cellsChangedCount :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TrimWhitespaceResponse' with the minimum fields required to make a request.
+newTrimWhitespaceResponse ::
+  TrimWhitespaceResponse
+newTrimWhitespaceResponse =
+  TrimWhitespaceResponse {cellsChangedCount = Core.Nothing}
+
+instance Core.FromJSON TrimWhitespaceResponse where
+  parseJSON =
+    Core.withObject
+      "TrimWhitespaceResponse"
+      ( \o ->
+          TrimWhitespaceResponse Core.<$> (o Core..:? "cellsChangedCount")
+      )
+
+instance Core.ToJSON TrimWhitespaceResponse where
+  toJSON TrimWhitespaceResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("cellsChangedCount" Core..=) Core.<$> cellsChangedCount]
+      )
+
+-- | Unmerges cells in the given range.
+--
+-- /See:/ 'newUnmergeCellsRequest' smart constructor.
+newtype UnmergeCellsRequest = UnmergeCellsRequest
+  { -- | 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.
+    range :: (Core.Maybe GridRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UnmergeCellsRequest' with the minimum fields required to make a request.
+newUnmergeCellsRequest ::
+  UnmergeCellsRequest
+newUnmergeCellsRequest = UnmergeCellsRequest {range = Core.Nothing}
+
+instance Core.FromJSON UnmergeCellsRequest where
+  parseJSON =
+    Core.withObject
+      "UnmergeCellsRequest"
+      (\o -> UnmergeCellsRequest Core.<$> (o Core..:? "range"))
+
+instance Core.ToJSON UnmergeCellsRequest where
+  toJSON UnmergeCellsRequest {..} =
+    Core.object (Core.catMaybes [("range" Core..=) Core.<$> range])
+
+-- | Updates properties of the supplied banded range.
+--
+-- /See:/ 'newUpdateBandingRequest' smart constructor.
+data UpdateBandingRequest = UpdateBandingRequest
+  { -- | The banded range to update with the new properties.
+    bandedRange :: (Core.Maybe BandedRange),
+    -- | 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.
+    fields :: (Core.Maybe Core.FieldMask)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateBandingRequest' with the minimum fields required to make a request.
+newUpdateBandingRequest ::
+  UpdateBandingRequest
+newUpdateBandingRequest =
+  UpdateBandingRequest
+    { bandedRange = Core.Nothing,
+      fields = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateBandingRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateBandingRequest"
+      ( \o ->
+          UpdateBandingRequest
+            Core.<$> (o Core..:? "bandedRange")
+            Core.<*> (o Core..:? "fields")
+      )
+
+instance Core.ToJSON UpdateBandingRequest where
+  toJSON UpdateBandingRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bandedRange" Core..=) Core.<$> bandedRange,
+            ("fields" Core..=) Core.<$> fields
+          ]
+      )
+
+-- | 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:/ 'newUpdateBordersRequest' smart constructor.
+data UpdateBordersRequest = UpdateBordersRequest
+  { -- | The border to put at the bottom of the range.
+    bottom :: (Core.Maybe Border),
+    -- | The horizontal border to put within the range.
+    innerHorizontal :: (Core.Maybe Border),
+    -- | The vertical border to put within the range.
+    innerVertical :: (Core.Maybe Border),
+    -- | The border to put at the left of the range.
+    left :: (Core.Maybe Border),
+    -- | The range whose borders should be updated.
+    range :: (Core.Maybe GridRange),
+    -- | The border to put at the right of the range.
+    right :: (Core.Maybe Border),
+    -- | The border to put at the top of the range.
+    top :: (Core.Maybe Border)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateBordersRequest' with the minimum fields required to make a request.
+newUpdateBordersRequest ::
+  UpdateBordersRequest
+newUpdateBordersRequest =
+  UpdateBordersRequest
+    { bottom = Core.Nothing,
+      innerHorizontal = Core.Nothing,
+      innerVertical = Core.Nothing,
+      left = Core.Nothing,
+      range = Core.Nothing,
+      right = Core.Nothing,
+      top = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateBordersRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateBordersRequest"
+      ( \o ->
+          UpdateBordersRequest
+            Core.<$> (o Core..:? "bottom")
+            Core.<*> (o Core..:? "innerHorizontal")
+            Core.<*> (o Core..:? "innerVertical")
+            Core.<*> (o Core..:? "left")
+            Core.<*> (o Core..:? "range")
+            Core.<*> (o Core..:? "right")
+            Core.<*> (o Core..:? "top")
+      )
+
+instance Core.ToJSON UpdateBordersRequest where
+  toJSON UpdateBordersRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bottom" Core..=) Core.<$> bottom,
+            ("innerHorizontal" Core..=) Core.<$> innerHorizontal,
+            ("innerVertical" Core..=) Core.<$> innerVertical,
+            ("left" Core..=) Core.<$> left,
+            ("range" Core..=) Core.<$> range,
+            ("right" Core..=) Core.<$> right,
+            ("top" Core..=) Core.<$> top
+          ]
+      )
+
+-- | Updates all cells in a range with new data.
+--
+-- /See:/ 'newUpdateCellsRequest' smart constructor.
+data UpdateCellsRequest = UpdateCellsRequest
+  { -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | 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.
+    range :: (Core.Maybe GridRange),
+    -- | The data to write.
+    rows :: (Core.Maybe [RowData]),
+    -- | The coordinate to start writing data at. Any number of rows and columns (including a different number of columns per row) may be written.
+    start :: (Core.Maybe GridCoordinate)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateCellsRequest' with the minimum fields required to make a request.
+newUpdateCellsRequest ::
+  UpdateCellsRequest
+newUpdateCellsRequest =
+  UpdateCellsRequest
+    { fields = Core.Nothing,
+      range = Core.Nothing,
+      rows = Core.Nothing,
+      start = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateCellsRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateCellsRequest"
+      ( \o ->
+          UpdateCellsRequest
+            Core.<$> (o Core..:? "fields")
+            Core.<*> (o Core..:? "range")
+            Core.<*> (o Core..:? "rows")
+            Core.<*> (o Core..:? "start")
+      )
+
+instance Core.ToJSON UpdateCellsRequest where
+  toJSON UpdateCellsRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fields" Core..=) Core.<$> fields,
+            ("range" Core..=) Core.<$> range,
+            ("rows" Core..=) Core.<$> rows,
+            ("start" Core..=) Core.<$> start
+          ]
+      )
+
+-- | Updates a chart\'s specifications. (This does not move or resize a chart. To move or resize a chart, use UpdateEmbeddedObjectPositionRequest.)
+--
+-- /See:/ 'newUpdateChartSpecRequest' smart constructor.
+data UpdateChartSpecRequest = UpdateChartSpecRequest
+  { -- | The ID of the chart to update.
+    chartId :: (Core.Maybe Core.Int32),
+    -- | The specification to apply to the chart.
+    spec :: (Core.Maybe ChartSpec)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateChartSpecRequest' with the minimum fields required to make a request.
+newUpdateChartSpecRequest ::
+  UpdateChartSpecRequest
+newUpdateChartSpecRequest =
+  UpdateChartSpecRequest
+    { chartId = Core.Nothing,
+      spec = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateChartSpecRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateChartSpecRequest"
+      ( \o ->
+          UpdateChartSpecRequest
+            Core.<$> (o Core..:? "chartId")
+            Core.<*> (o Core..:? "spec")
+      )
+
+instance Core.ToJSON UpdateChartSpecRequest where
+  toJSON UpdateChartSpecRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("chartId" Core..=) Core.<$> chartId,
+            ("spec" Core..=) Core.<$> spec
+          ]
+      )
+
+-- | Updates a conditional format rule at the given index, or moves a conditional format rule to another index.
+--
+-- /See:/ 'newUpdateConditionalFormatRuleRequest' smart constructor.
+data UpdateConditionalFormatRuleRequest = UpdateConditionalFormatRuleRequest
+  { -- | The zero-based index of the rule that should be replaced or moved.
+    index :: (Core.Maybe Core.Int32),
+    -- | The zero-based new index the rule should end up at.
+    newIndex' :: (Core.Maybe Core.Int32),
+    -- | The rule that should replace the rule at the given index.
+    rule :: (Core.Maybe ConditionalFormatRule),
+    -- | The sheet of the rule to move. Required if new_index is set, unused otherwise.
+    sheetId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateConditionalFormatRuleRequest' with the minimum fields required to make a request.
+newUpdateConditionalFormatRuleRequest ::
+  UpdateConditionalFormatRuleRequest
+newUpdateConditionalFormatRuleRequest =
+  UpdateConditionalFormatRuleRequest
+    { index = Core.Nothing,
+      newIndex' = Core.Nothing,
+      rule = Core.Nothing,
+      sheetId = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateConditionalFormatRuleRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateConditionalFormatRuleRequest"
+      ( \o ->
+          UpdateConditionalFormatRuleRequest
+            Core.<$> (o Core..:? "index")
+            Core.<*> (o Core..:? "newIndex")
+            Core.<*> (o Core..:? "rule")
+            Core.<*> (o Core..:? "sheetId")
+      )
+
+instance Core.ToJSON UpdateConditionalFormatRuleRequest where
+  toJSON UpdateConditionalFormatRuleRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("index" Core..=) Core.<$> index,
+            ("newIndex" Core..=) Core.<$> newIndex',
+            ("rule" Core..=) Core.<$> rule,
+            ("sheetId" Core..=) Core.<$> sheetId
+          ]
+      )
+
+-- | The result of updating a conditional format rule.
+--
+-- /See:/ 'newUpdateConditionalFormatRuleResponse' smart constructor.
+data UpdateConditionalFormatRuleResponse = UpdateConditionalFormatRuleResponse
+  { -- | The index of the new rule.
+    newIndex' :: (Core.Maybe Core.Int32),
+    -- | The new rule that replaced the old rule (if replacing), or the rule that was moved (if moved)
+    newRule' :: (Core.Maybe ConditionalFormatRule),
+    -- | The old index of the rule. Not set if a rule was replaced (because it is the same as new_index).
+    oldIndex :: (Core.Maybe Core.Int32),
+    -- | The old (deleted) rule. Not set if a rule was moved (because it is the same as new_rule).
+    oldRule :: (Core.Maybe ConditionalFormatRule)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateConditionalFormatRuleResponse' with the minimum fields required to make a request.
+newUpdateConditionalFormatRuleResponse ::
+  UpdateConditionalFormatRuleResponse
+newUpdateConditionalFormatRuleResponse =
+  UpdateConditionalFormatRuleResponse
+    { newIndex' = Core.Nothing,
+      newRule' = Core.Nothing,
+      oldIndex = Core.Nothing,
+      oldRule = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateConditionalFormatRuleResponse where
+  parseJSON =
+    Core.withObject
+      "UpdateConditionalFormatRuleResponse"
+      ( \o ->
+          UpdateConditionalFormatRuleResponse
+            Core.<$> (o Core..:? "newIndex")
+            Core.<*> (o Core..:? "newRule")
+            Core.<*> (o Core..:? "oldIndex")
+            Core.<*> (o Core..:? "oldRule")
+      )
+
+instance Core.ToJSON UpdateConditionalFormatRuleResponse where
+  toJSON UpdateConditionalFormatRuleResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("newIndex" Core..=) Core.<$> newIndex',
+            ("newRule" Core..=) Core.<$> newRule',
+            ("oldIndex" Core..=) Core.<$> oldIndex,
+            ("oldRule" Core..=) Core.<$> oldRule
+          ]
+      )
+
+-- | Updates a data source. After the data source is updated successfully, an execution is triggered to refresh the associated DATA_SOURCE sheet to read data from the updated data source. The request requires an additional @bigquery.readonly@ OAuth scope if you are updating a BigQuery data source.
+--
+-- /See:/ 'newUpdateDataSourceRequest' smart constructor.
+data UpdateDataSourceRequest = UpdateDataSourceRequest
+  { -- | The data source to update.
+    dataSource :: (Core.Maybe DataSource),
+    -- | The fields that should be updated. At least one field must be specified. The root @dataSource@ is implied and should not be specified. A single @\"*\"@ can be used as short-hand for listing every field.
+    fields :: (Core.Maybe Core.FieldMask)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateDataSourceRequest' with the minimum fields required to make a request.
+newUpdateDataSourceRequest ::
+  UpdateDataSourceRequest
+newUpdateDataSourceRequest =
+  UpdateDataSourceRequest
+    { dataSource = Core.Nothing,
+      fields = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateDataSourceRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateDataSourceRequest"
+      ( \o ->
+          UpdateDataSourceRequest
+            Core.<$> (o Core..:? "dataSource")
+            Core.<*> (o Core..:? "fields")
+      )
+
+instance Core.ToJSON UpdateDataSourceRequest where
+  toJSON UpdateDataSourceRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSource" Core..=) Core.<$> dataSource,
+            ("fields" Core..=) Core.<$> fields
+          ]
+      )
+
+-- | The response from updating data source.
+--
+-- /See:/ 'newUpdateDataSourceResponse' smart constructor.
+data UpdateDataSourceResponse = UpdateDataSourceResponse
+  { -- | The data execution status.
+    dataExecutionStatus :: (Core.Maybe DataExecutionStatus),
+    -- | The updated data source.
+    dataSource :: (Core.Maybe DataSource)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateDataSourceResponse' with the minimum fields required to make a request.
+newUpdateDataSourceResponse ::
+  UpdateDataSourceResponse
+newUpdateDataSourceResponse =
+  UpdateDataSourceResponse
+    { dataExecutionStatus = Core.Nothing,
+      dataSource = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateDataSourceResponse where
+  parseJSON =
+    Core.withObject
+      "UpdateDataSourceResponse"
+      ( \o ->
+          UpdateDataSourceResponse
+            Core.<$> (o Core..:? "dataExecutionStatus")
+            Core.<*> (o Core..:? "dataSource")
+      )
+
+instance Core.ToJSON UpdateDataSourceResponse where
+  toJSON UpdateDataSourceResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataExecutionStatus" Core..=) Core.<$> dataExecutionStatus,
+            ("dataSource" Core..=) Core.<$> dataSource
+          ]
+      )
+
+-- | 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:/ 'newUpdateDeveloperMetadataRequest' smart constructor.
+data UpdateDeveloperMetadataRequest = UpdateDeveloperMetadataRequest
+  { -- | The filters matching the developer metadata entries to update.
+    dataFilters :: (Core.Maybe [DataFilter]),
+    -- | The value that all metadata matched by the data filters will be updated to.
+    developerMetadata :: (Core.Maybe DeveloperMetadata),
+    -- | 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.
+    fields :: (Core.Maybe Core.FieldMask)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateDeveloperMetadataRequest' with the minimum fields required to make a request.
+newUpdateDeveloperMetadataRequest ::
+  UpdateDeveloperMetadataRequest
+newUpdateDeveloperMetadataRequest =
+  UpdateDeveloperMetadataRequest
+    { dataFilters = Core.Nothing,
+      developerMetadata = Core.Nothing,
+      fields = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateDeveloperMetadataRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateDeveloperMetadataRequest"
+      ( \o ->
+          UpdateDeveloperMetadataRequest
+            Core.<$> (o Core..:? "dataFilters")
+            Core.<*> (o Core..:? "developerMetadata")
+            Core.<*> (o Core..:? "fields")
+      )
+
+instance Core.ToJSON UpdateDeveloperMetadataRequest where
+  toJSON UpdateDeveloperMetadataRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataFilters" Core..=) Core.<$> dataFilters,
+            ("developerMetadata" Core..=) Core.<$> developerMetadata,
+            ("fields" Core..=) Core.<$> fields
+          ]
+      )
+
+-- | The response from updating developer metadata.
+--
+-- /See:/ 'newUpdateDeveloperMetadataResponse' smart constructor.
+newtype UpdateDeveloperMetadataResponse = UpdateDeveloperMetadataResponse
+  { -- | The updated developer metadata.
+    developerMetadata :: (Core.Maybe [DeveloperMetadata])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateDeveloperMetadataResponse' with the minimum fields required to make a request.
+newUpdateDeveloperMetadataResponse ::
+  UpdateDeveloperMetadataResponse
+newUpdateDeveloperMetadataResponse =
+  UpdateDeveloperMetadataResponse {developerMetadata = Core.Nothing}
+
+instance Core.FromJSON UpdateDeveloperMetadataResponse where
+  parseJSON =
+    Core.withObject
+      "UpdateDeveloperMetadataResponse"
+      ( \o ->
+          UpdateDeveloperMetadataResponse
+            Core.<$> (o Core..:? "developerMetadata")
+      )
+
+instance Core.ToJSON UpdateDeveloperMetadataResponse where
+  toJSON UpdateDeveloperMetadataResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [("developerMetadata" Core..=) Core.<$> developerMetadata]
+      )
+
+-- | Updates the state of the specified group.
+--
+-- /See:/ 'newUpdateDimensionGroupRequest' smart constructor.
+data UpdateDimensionGroupRequest = UpdateDimensionGroupRequest
+  { -- | 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.
+    dimensionGroup :: (Core.Maybe DimensionGroup),
+    -- | 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.
+    fields :: (Core.Maybe Core.FieldMask)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateDimensionGroupRequest' with the minimum fields required to make a request.
+newUpdateDimensionGroupRequest ::
+  UpdateDimensionGroupRequest
+newUpdateDimensionGroupRequest =
+  UpdateDimensionGroupRequest
+    { dimensionGroup = Core.Nothing,
+      fields = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateDimensionGroupRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateDimensionGroupRequest"
+      ( \o ->
+          UpdateDimensionGroupRequest
+            Core.<$> (o Core..:? "dimensionGroup")
+            Core.<*> (o Core..:? "fields")
+      )
+
+instance Core.ToJSON UpdateDimensionGroupRequest where
+  toJSON UpdateDimensionGroupRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dimensionGroup" Core..=) Core.<$> dimensionGroup,
+            ("fields" Core..=) Core.<$> fields
+          ]
+      )
+
+-- | Updates properties of dimensions within the specified range.
+--
+-- /See:/ 'newUpdateDimensionPropertiesRequest' smart constructor.
+data UpdateDimensionPropertiesRequest = UpdateDimensionPropertiesRequest
+  { -- | The columns on a data source sheet to update.
+    dataSourceSheetRange :: (Core.Maybe DataSourceSheetDimensionRange),
+    -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | Properties to update.
+    properties :: (Core.Maybe DimensionProperties),
+    -- | The rows or columns to update.
+    range :: (Core.Maybe DimensionRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateDimensionPropertiesRequest' with the minimum fields required to make a request.
+newUpdateDimensionPropertiesRequest ::
+  UpdateDimensionPropertiesRequest
+newUpdateDimensionPropertiesRequest =
+  UpdateDimensionPropertiesRequest
+    { dataSourceSheetRange =
+        Core.Nothing,
+      fields = Core.Nothing,
+      properties = Core.Nothing,
+      range = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateDimensionPropertiesRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateDimensionPropertiesRequest"
+      ( \o ->
+          UpdateDimensionPropertiesRequest
+            Core.<$> (o Core..:? "dataSourceSheetRange")
+            Core.<*> (o Core..:? "fields")
+            Core.<*> (o Core..:? "properties")
+            Core.<*> (o Core..:? "range")
+      )
+
+instance Core.ToJSON UpdateDimensionPropertiesRequest where
+  toJSON UpdateDimensionPropertiesRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceSheetRange" Core..=) Core.<$> dataSourceSheetRange,
+            ("fields" Core..=) Core.<$> fields,
+            ("properties" Core..=) Core.<$> properties,
+            ("range" Core..=) Core.<$> range
+          ]
+      )
+
+-- | Updates an embedded object\'s border property.
+--
+-- /See:/ 'newUpdateEmbeddedObjectBorderRequest' smart constructor.
+data UpdateEmbeddedObjectBorderRequest = UpdateEmbeddedObjectBorderRequest
+  { -- | The border that applies to the embedded object.
+    border :: (Core.Maybe EmbeddedObjectBorder),
+    -- | The fields that should be updated. At least one field must be specified. The root @border@ is implied and should not be specified. A single @\"*\"@ can be used as short-hand for listing every field.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | The ID of the embedded object to update.
+    objectId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateEmbeddedObjectBorderRequest' with the minimum fields required to make a request.
+newUpdateEmbeddedObjectBorderRequest ::
+  UpdateEmbeddedObjectBorderRequest
+newUpdateEmbeddedObjectBorderRequest =
+  UpdateEmbeddedObjectBorderRequest
+    { border = Core.Nothing,
+      fields = Core.Nothing,
+      objectId = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateEmbeddedObjectBorderRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateEmbeddedObjectBorderRequest"
+      ( \o ->
+          UpdateEmbeddedObjectBorderRequest
+            Core.<$> (o Core..:? "border")
+            Core.<*> (o Core..:? "fields")
+            Core.<*> (o Core..:? "objectId")
+      )
+
+instance Core.ToJSON UpdateEmbeddedObjectBorderRequest where
+  toJSON UpdateEmbeddedObjectBorderRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("border" Core..=) Core.<$> border,
+            ("fields" Core..=) Core.<$> fields,
+            ("objectId" Core..=) Core.<$> objectId
+          ]
+      )
+
+-- | Update an embedded object\'s position (such as a moving or resizing a chart or image).
+--
+-- /See:/ 'newUpdateEmbeddedObjectPositionRequest' smart constructor.
+data UpdateEmbeddedObjectPositionRequest = UpdateEmbeddedObjectPositionRequest
+  { -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | 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.
+    newPosition' :: (Core.Maybe EmbeddedObjectPosition),
+    -- | The ID of the object to moved.
+    objectId :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateEmbeddedObjectPositionRequest' with the minimum fields required to make a request.
+newUpdateEmbeddedObjectPositionRequest ::
+  UpdateEmbeddedObjectPositionRequest
+newUpdateEmbeddedObjectPositionRequest =
+  UpdateEmbeddedObjectPositionRequest
+    { fields = Core.Nothing,
+      newPosition' = Core.Nothing,
+      objectId = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateEmbeddedObjectPositionRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateEmbeddedObjectPositionRequest"
+      ( \o ->
+          UpdateEmbeddedObjectPositionRequest
+            Core.<$> (o Core..:? "fields")
+            Core.<*> (o Core..:? "newPosition")
+            Core.<*> (o Core..:? "objectId")
+      )
+
+instance Core.ToJSON UpdateEmbeddedObjectPositionRequest where
+  toJSON UpdateEmbeddedObjectPositionRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fields" Core..=) Core.<$> fields,
+            ("newPosition" Core..=) Core.<$> newPosition',
+            ("objectId" Core..=) Core.<$> objectId
+          ]
+      )
+
+-- | The result of updating an embedded object\'s position.
+--
+-- /See:/ 'newUpdateEmbeddedObjectPositionResponse' smart constructor.
+newtype UpdateEmbeddedObjectPositionResponse = UpdateEmbeddedObjectPositionResponse
+  { -- | The new position of the embedded object.
+    position :: (Core.Maybe EmbeddedObjectPosition)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateEmbeddedObjectPositionResponse' with the minimum fields required to make a request.
+newUpdateEmbeddedObjectPositionResponse ::
+  UpdateEmbeddedObjectPositionResponse
+newUpdateEmbeddedObjectPositionResponse =
+  UpdateEmbeddedObjectPositionResponse {position = Core.Nothing}
+
+instance Core.FromJSON UpdateEmbeddedObjectPositionResponse where
+  parseJSON =
+    Core.withObject
+      "UpdateEmbeddedObjectPositionResponse"
+      ( \o ->
+          UpdateEmbeddedObjectPositionResponse
+            Core.<$> (o Core..:? "position")
+      )
+
+instance Core.ToJSON UpdateEmbeddedObjectPositionResponse where
+  toJSON UpdateEmbeddedObjectPositionResponse {..} =
+    Core.object
+      (Core.catMaybes [("position" Core..=) Core.<$> position])
+
+-- | Updates properties of the filter view.
+--
+-- /See:/ 'newUpdateFilterViewRequest' smart constructor.
+data UpdateFilterViewRequest = UpdateFilterViewRequest
+  { -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | The new properties of the filter view.
+    filter :: (Core.Maybe FilterView)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateFilterViewRequest' with the minimum fields required to make a request.
+newUpdateFilterViewRequest ::
+  UpdateFilterViewRequest
+newUpdateFilterViewRequest =
+  UpdateFilterViewRequest
+    { fields = Core.Nothing,
+      filter = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateFilterViewRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateFilterViewRequest"
+      ( \o ->
+          UpdateFilterViewRequest
+            Core.<$> (o Core..:? "fields")
+            Core.<*> (o Core..:? "filter")
+      )
+
+instance Core.ToJSON UpdateFilterViewRequest where
+  toJSON UpdateFilterViewRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fields" Core..=) Core.<$> fields,
+            ("filter" Core..=) Core.<$> filter
+          ]
+      )
+
+-- | Updates properties of the named range with the specified namedRangeId.
+--
+-- /See:/ 'newUpdateNamedRangeRequest' smart constructor.
+data UpdateNamedRangeRequest = UpdateNamedRangeRequest
+  { -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | The named range to update with the new properties.
+    namedRange :: (Core.Maybe NamedRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateNamedRangeRequest' with the minimum fields required to make a request.
+newUpdateNamedRangeRequest ::
+  UpdateNamedRangeRequest
+newUpdateNamedRangeRequest =
+  UpdateNamedRangeRequest
+    { fields = Core.Nothing,
+      namedRange = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateNamedRangeRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateNamedRangeRequest"
+      ( \o ->
+          UpdateNamedRangeRequest
+            Core.<$> (o Core..:? "fields")
+            Core.<*> (o Core..:? "namedRange")
+      )
+
+instance Core.ToJSON UpdateNamedRangeRequest where
+  toJSON UpdateNamedRangeRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fields" Core..=) Core.<$> fields,
+            ("namedRange" Core..=) Core.<$> namedRange
+          ]
+      )
+
+-- | Updates an existing protected range with the specified protectedRangeId.
+--
+-- /See:/ 'newUpdateProtectedRangeRequest' smart constructor.
+data UpdateProtectedRangeRequest = UpdateProtectedRangeRequest
+  { -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | The protected range to update with the new properties.
+    protectedRange :: (Core.Maybe ProtectedRange)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateProtectedRangeRequest' with the minimum fields required to make a request.
+newUpdateProtectedRangeRequest ::
+  UpdateProtectedRangeRequest
+newUpdateProtectedRangeRequest =
+  UpdateProtectedRangeRequest
+    { fields = Core.Nothing,
+      protectedRange = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateProtectedRangeRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateProtectedRangeRequest"
+      ( \o ->
+          UpdateProtectedRangeRequest
+            Core.<$> (o Core..:? "fields")
+            Core.<*> (o Core..:? "protectedRange")
+      )
+
+instance Core.ToJSON UpdateProtectedRangeRequest where
+  toJSON UpdateProtectedRangeRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fields" Core..=) Core.<$> fields,
+            ("protectedRange" Core..=) Core.<$> protectedRange
+          ]
+      )
+
+-- | Updates properties of the sheet with the specified sheetId.
+--
+-- /See:/ 'newUpdateSheetPropertiesRequest' smart constructor.
+data UpdateSheetPropertiesRequest = UpdateSheetPropertiesRequest
+  { -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | The properties to update.
+    properties :: (Core.Maybe SheetProperties)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateSheetPropertiesRequest' with the minimum fields required to make a request.
+newUpdateSheetPropertiesRequest ::
+  UpdateSheetPropertiesRequest
+newUpdateSheetPropertiesRequest =
+  UpdateSheetPropertiesRequest
+    { fields = Core.Nothing,
+      properties = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateSheetPropertiesRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateSheetPropertiesRequest"
+      ( \o ->
+          UpdateSheetPropertiesRequest
+            Core.<$> (o Core..:? "fields")
+            Core.<*> (o Core..:? "properties")
+      )
+
+instance Core.ToJSON UpdateSheetPropertiesRequest where
+  toJSON UpdateSheetPropertiesRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fields" Core..=) Core.<$> fields,
+            ("properties" Core..=) Core.<$> properties
+          ]
+      )
+
+-- | Updates a slicer\'s specifications. (This does not move or resize a slicer. To move or resize a slicer use UpdateEmbeddedObjectPositionRequest.
+--
+-- /See:/ 'newUpdateSlicerSpecRequest' smart constructor.
+data UpdateSlicerSpecRequest = UpdateSlicerSpecRequest
+  { -- | The fields that should be updated. At least one field must be specified. The root @SlicerSpec@ is implied and should not be specified. A single \"*\"\` can be used as short-hand for listing every field.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | The id of the slicer to update.
+    slicerId :: (Core.Maybe Core.Int32),
+    -- | The specification to apply to the slicer.
+    spec :: (Core.Maybe SlicerSpec)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateSlicerSpecRequest' with the minimum fields required to make a request.
+newUpdateSlicerSpecRequest ::
+  UpdateSlicerSpecRequest
+newUpdateSlicerSpecRequest =
+  UpdateSlicerSpecRequest
+    { fields = Core.Nothing,
+      slicerId = Core.Nothing,
+      spec = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateSlicerSpecRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateSlicerSpecRequest"
+      ( \o ->
+          UpdateSlicerSpecRequest
+            Core.<$> (o Core..:? "fields")
+            Core.<*> (o Core..:? "slicerId")
+            Core.<*> (o Core..:? "spec")
+      )
+
+instance Core.ToJSON UpdateSlicerSpecRequest where
+  toJSON UpdateSlicerSpecRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fields" Core..=) Core.<$> fields,
+            ("slicerId" Core..=) Core.<$> slicerId,
+            ("spec" Core..=) Core.<$> spec
+          ]
+      )
+
+-- | Updates properties of a spreadsheet.
+--
+-- /See:/ 'newUpdateSpreadsheetPropertiesRequest' smart constructor.
+data UpdateSpreadsheetPropertiesRequest = UpdateSpreadsheetPropertiesRequest
+  { -- | 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.
+    fields :: (Core.Maybe Core.FieldMask),
+    -- | The properties to update.
+    properties :: (Core.Maybe SpreadsheetProperties)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateSpreadsheetPropertiesRequest' with the minimum fields required to make a request.
+newUpdateSpreadsheetPropertiesRequest ::
+  UpdateSpreadsheetPropertiesRequest
+newUpdateSpreadsheetPropertiesRequest =
+  UpdateSpreadsheetPropertiesRequest
+    { fields = Core.Nothing,
+      properties = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateSpreadsheetPropertiesRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateSpreadsheetPropertiesRequest"
+      ( \o ->
+          UpdateSpreadsheetPropertiesRequest
+            Core.<$> (o Core..:? "fields")
+            Core.<*> (o Core..:? "properties")
+      )
+
+instance Core.ToJSON UpdateSpreadsheetPropertiesRequest where
+  toJSON UpdateSpreadsheetPropertiesRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fields" Core..=) Core.<$> fields,
+            ("properties" Core..=) Core.<$> properties
+          ]
+      )
+
+-- | The response when updating a range of values by a data filter in a spreadsheet.
+--
+-- /See:/ 'newUpdateValuesByDataFilterResponse' smart constructor.
+data UpdateValuesByDataFilterResponse = UpdateValuesByDataFilterResponse
+  { -- | The data filter that selected the range that was updated.
+    dataFilter :: (Core.Maybe DataFilter),
+    -- | The number of cells updated.
+    updatedCells :: (Core.Maybe Core.Int32),
+    -- | The number of columns where at least one cell in the column was updated.
+    updatedColumns :: (Core.Maybe Core.Int32),
+    -- | 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@.
+    updatedData :: (Core.Maybe ValueRange),
+    -- | The range (in </sheets/api/guides/concepts#cell A1 notation>) that updates were applied to.
+    updatedRange :: (Core.Maybe Core.Text),
+    -- | The number of rows where at least one cell in the row was updated.
+    updatedRows :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateValuesByDataFilterResponse' with the minimum fields required to make a request.
+newUpdateValuesByDataFilterResponse ::
+  UpdateValuesByDataFilterResponse
+newUpdateValuesByDataFilterResponse =
+  UpdateValuesByDataFilterResponse
+    { dataFilter = Core.Nothing,
+      updatedCells = Core.Nothing,
+      updatedColumns = Core.Nothing,
+      updatedData = Core.Nothing,
+      updatedRange = Core.Nothing,
+      updatedRows = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateValuesByDataFilterResponse where
+  parseJSON =
+    Core.withObject
+      "UpdateValuesByDataFilterResponse"
+      ( \o ->
+          UpdateValuesByDataFilterResponse
+            Core.<$> (o Core..:? "dataFilter")
+            Core.<*> (o Core..:? "updatedCells")
+            Core.<*> (o Core..:? "updatedColumns")
+            Core.<*> (o Core..:? "updatedData")
+            Core.<*> (o Core..:? "updatedRange")
+            Core.<*> (o Core..:? "updatedRows")
+      )
+
+instance Core.ToJSON UpdateValuesByDataFilterResponse where
+  toJSON UpdateValuesByDataFilterResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataFilter" Core..=) Core.<$> dataFilter,
+            ("updatedCells" Core..=) Core.<$> updatedCells,
+            ("updatedColumns" Core..=) Core.<$> updatedColumns,
+            ("updatedData" Core..=) Core.<$> updatedData,
+            ("updatedRange" Core..=) Core.<$> updatedRange,
+            ("updatedRows" Core..=) Core.<$> updatedRows
+          ]
+      )
+
+-- | The response when updating a range of values in a spreadsheet.
+--
+-- /See:/ 'newUpdateValuesResponse' smart constructor.
+data UpdateValuesResponse = UpdateValuesResponse
+  { -- | The spreadsheet the updates were applied to.
+    spreadsheetId :: (Core.Maybe Core.Text),
+    -- | The number of cells updated.
+    updatedCells :: (Core.Maybe Core.Int32),
+    -- | The number of columns where at least one cell in the column was updated.
+    updatedColumns :: (Core.Maybe Core.Int32),
+    -- | The values of the cells after updates were applied. This is only included if the request\'s @includeValuesInResponse@ field was @true@.
+    updatedData :: (Core.Maybe ValueRange),
+    -- | The range (in A1 notation) that updates were applied to.
+    updatedRange :: (Core.Maybe Core.Text),
+    -- | The number of rows where at least one cell in the row was updated.
+    updatedRows :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateValuesResponse' with the minimum fields required to make a request.
+newUpdateValuesResponse ::
+  UpdateValuesResponse
+newUpdateValuesResponse =
+  UpdateValuesResponse
+    { spreadsheetId = Core.Nothing,
+      updatedCells = Core.Nothing,
+      updatedColumns = Core.Nothing,
+      updatedData = Core.Nothing,
+      updatedRange = Core.Nothing,
+      updatedRows = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateValuesResponse where
+  parseJSON =
+    Core.withObject
+      "UpdateValuesResponse"
+      ( \o ->
+          UpdateValuesResponse
+            Core.<$> (o Core..:? "spreadsheetId")
+            Core.<*> (o Core..:? "updatedCells")
+            Core.<*> (o Core..:? "updatedColumns")
+            Core.<*> (o Core..:? "updatedData")
+            Core.<*> (o Core..:? "updatedRange")
+            Core.<*> (o Core..:? "updatedRows")
+      )
+
+instance Core.ToJSON UpdateValuesResponse where
+  toJSON UpdateValuesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("spreadsheetId" Core..=) Core.<$> spreadsheetId,
+            ("updatedCells" Core..=) Core.<$> updatedCells,
+            ("updatedColumns" Core..=) Core.<$> updatedColumns,
+            ("updatedData" Core..=) Core.<$> updatedData,
+            ("updatedRange" Core..=) Core.<$> updatedRange,
+            ("updatedRows" Core..=) Core.<$> updatedRows
+          ]
+      )
+
+-- | Data within a range of the spreadsheet.
+--
+-- /See:/ 'newValueRange' smart constructor.
+data ValueRange = ValueRange
+  { -- | 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.
+    majorDimension :: (Core.Maybe ValueRange_MajorDimension),
+    -- | The range the values cover, in </sheets/api/guides/concepts#cell A1 notation>. For output, this range indicates the entire requested range, even though the values will exclude trailing rows and columns. When appending values, this field represents the range to search for a table, after which values will be appended.
+    range :: (Core.Maybe Core.Text),
+    -- | The data that was read or to be written. This is an array of arrays, the outer array representing all the data and each inner array representing a major dimension. Each item in the inner array corresponds with one cell. For output, empty trailing rows and columns will not be included. For input, supported value types are: bool, string, and double. Null values will be skipped. To set a cell to an empty value, set the string value to an empty string.
+    values :: (Core.Maybe [[Core.Value]])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ValueRange' with the minimum fields required to make a request.
+newValueRange ::
+  ValueRange
+newValueRange =
+  ValueRange
+    { majorDimension = Core.Nothing,
+      range = Core.Nothing,
+      values = Core.Nothing
+    }
+
+instance Core.FromJSON ValueRange where
+  parseJSON =
+    Core.withObject
+      "ValueRange"
+      ( \o ->
+          ValueRange
+            Core.<$> (o Core..:? "majorDimension")
+            Core.<*> (o Core..:? "range")
+            Core.<*> (o Core..:? "values")
+      )
+
+instance Core.ToJSON ValueRange where
+  toJSON ValueRange {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("majorDimension" Core..=) Core.<$> majorDimension,
+            ("range" Core..=) Core.<$> range,
+            ("values" Core..=) Core.<$> values
+          ]
+      )
+
+-- | Styles for a waterfall chart column.
+--
+-- /See:/ 'newWaterfallChartColumnStyle' smart constructor.
+data WaterfallChartColumnStyle = WaterfallChartColumnStyle
+  { -- | The color of the column. Deprecated: Use color_style.
+    color :: (Core.Maybe Color),
+    -- | The color of the column. If color is also set, this field takes precedence.
+    colorStyle :: (Core.Maybe ColorStyle),
+    -- | The label of the column\'s legend.
+    label :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'WaterfallChartColumnStyle' with the minimum fields required to make a request.
+newWaterfallChartColumnStyle ::
+  WaterfallChartColumnStyle
+newWaterfallChartColumnStyle =
+  WaterfallChartColumnStyle
+    { color = Core.Nothing,
+      colorStyle = Core.Nothing,
+      label = Core.Nothing
+    }
+
+instance Core.FromJSON WaterfallChartColumnStyle where
+  parseJSON =
+    Core.withObject
+      "WaterfallChartColumnStyle"
+      ( \o ->
+          WaterfallChartColumnStyle
+            Core.<$> (o Core..:? "color")
+            Core.<*> (o Core..:? "colorStyle")
+            Core.<*> (o Core..:? "label")
+      )
+
+instance Core.ToJSON WaterfallChartColumnStyle where
+  toJSON WaterfallChartColumnStyle {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("color" Core..=) Core.<$> color,
+            ("colorStyle" Core..=) Core.<$> colorStyle,
+            ("label" Core..=) Core.<$> label
+          ]
+      )
+
+-- | A custom subtotal column for a waterfall chart series.
+--
+-- /See:/ 'newWaterfallChartCustomSubtotal' smart constructor.
+data WaterfallChartCustomSubtotal = WaterfallChartCustomSubtotal
+  { -- | True if the data point at subtotal_index is the subtotal. If false, the subtotal will be computed and appear after the data point.
+    dataIsSubtotal :: (Core.Maybe Core.Bool),
+    -- | A label for the subtotal column.
+    label :: (Core.Maybe Core.Text),
+    -- | The zero-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.
+    subtotalIndex :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'WaterfallChartCustomSubtotal' with the minimum fields required to make a request.
+newWaterfallChartCustomSubtotal ::
+  WaterfallChartCustomSubtotal
+newWaterfallChartCustomSubtotal =
+  WaterfallChartCustomSubtotal
+    { dataIsSubtotal = Core.Nothing,
+      label = Core.Nothing,
+      subtotalIndex = Core.Nothing
+    }
+
+instance Core.FromJSON WaterfallChartCustomSubtotal where
+  parseJSON =
+    Core.withObject
+      "WaterfallChartCustomSubtotal"
+      ( \o ->
+          WaterfallChartCustomSubtotal
+            Core.<$> (o Core..:? "dataIsSubtotal")
+            Core.<*> (o Core..:? "label")
+            Core.<*> (o Core..:? "subtotalIndex")
+      )
+
+instance Core.ToJSON WaterfallChartCustomSubtotal where
+  toJSON WaterfallChartCustomSubtotal {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataIsSubtotal" Core..=) Core.<$> dataIsSubtotal,
+            ("label" Core..=) Core.<$> label,
+            ("subtotalIndex" Core..=) Core.<$> subtotalIndex
+          ]
+      )
+
+-- | The domain of a waterfall chart.
+--
+-- /See:/ 'newWaterfallChartDomain' smart constructor.
+data WaterfallChartDomain = WaterfallChartDomain
+  { -- | The data of the WaterfallChartDomain.
+    data' :: (Core.Maybe ChartData),
+    -- | True to reverse the order of the domain values (horizontal axis).
+    reversed :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'WaterfallChartDomain' with the minimum fields required to make a request.
+newWaterfallChartDomain ::
+  WaterfallChartDomain
+newWaterfallChartDomain =
+  WaterfallChartDomain
+    { data' = Core.Nothing,
+      reversed = Core.Nothing
+    }
+
+instance Core.FromJSON WaterfallChartDomain where
+  parseJSON =
+    Core.withObject
+      "WaterfallChartDomain"
+      ( \o ->
+          WaterfallChartDomain
+            Core.<$> (o Core..:? "data")
+            Core.<*> (o Core..:? "reversed")
+      )
+
+instance Core.ToJSON WaterfallChartDomain where
+  toJSON WaterfallChartDomain {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("data" Core..=) Core.<$> data',
+            ("reversed" Core..=) Core.<$> reversed
+          ]
+      )
+
+-- | A single series of data for a waterfall chart.
+--
+-- /See:/ 'newWaterfallChartSeries' smart constructor.
+data WaterfallChartSeries = WaterfallChartSeries
+  { -- | 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.
+    customSubtotals :: (Core.Maybe [WaterfallChartCustomSubtotal]),
+    -- | The data being visualized in this series.
+    data' :: (Core.Maybe ChartData),
+    -- | Information about the data labels for this series.
+    dataLabel :: (Core.Maybe DataLabel),
+    -- | 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.
+    hideTrailingSubtotal :: (Core.Maybe Core.Bool),
+    -- | Styles for all columns in this series with negative values.
+    negativeColumnsStyle :: (Core.Maybe WaterfallChartColumnStyle),
+    -- | Styles for all columns in this series with positive values.
+    positiveColumnsStyle :: (Core.Maybe WaterfallChartColumnStyle),
+    -- | Styles for all subtotal columns in this series.
+    subtotalColumnsStyle :: (Core.Maybe WaterfallChartColumnStyle)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'WaterfallChartSeries' with the minimum fields required to make a request.
+newWaterfallChartSeries ::
+  WaterfallChartSeries
+newWaterfallChartSeries =
+  WaterfallChartSeries
+    { customSubtotals = Core.Nothing,
+      data' = Core.Nothing,
+      dataLabel = Core.Nothing,
+      hideTrailingSubtotal = Core.Nothing,
+      negativeColumnsStyle = Core.Nothing,
+      positiveColumnsStyle = Core.Nothing,
+      subtotalColumnsStyle = Core.Nothing
+    }
+
+instance Core.FromJSON WaterfallChartSeries where
+  parseJSON =
+    Core.withObject
+      "WaterfallChartSeries"
+      ( \o ->
+          WaterfallChartSeries
+            Core.<$> (o Core..:? "customSubtotals")
+            Core.<*> (o Core..:? "data")
+            Core.<*> (o Core..:? "dataLabel")
+            Core.<*> (o Core..:? "hideTrailingSubtotal")
+            Core.<*> (o Core..:? "negativeColumnsStyle")
+            Core.<*> (o Core..:? "positiveColumnsStyle")
+            Core.<*> (o Core..:? "subtotalColumnsStyle")
+      )
+
+instance Core.ToJSON WaterfallChartSeries where
+  toJSON WaterfallChartSeries {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("customSubtotals" Core..=) Core.<$> customSubtotals,
+            ("data" Core..=) Core.<$> data',
+            ("dataLabel" Core..=) Core.<$> dataLabel,
+            ("hideTrailingSubtotal" Core..=) Core.<$> hideTrailingSubtotal,
+            ("negativeColumnsStyle" Core..=) Core.<$> negativeColumnsStyle,
+            ("positiveColumnsStyle" Core..=) Core.<$> positiveColumnsStyle,
+            ("subtotalColumnsStyle" Core..=) Core.<$> subtotalColumnsStyle
+          ]
+      )
+
+-- | A waterfall chart.
+--
+-- /See:/ 'newWaterfallChartSpec' smart constructor.
+data WaterfallChartSpec = WaterfallChartSpec
+  { -- | The line style for the connector lines.
+    connectorLineStyle :: (Core.Maybe LineStyle),
+    -- | The domain data (horizontal axis) for the waterfall chart.
+    domain :: (Core.Maybe WaterfallChartDomain),
+    -- | True to interpret the first value as a total.
+    firstValueIsTotal :: (Core.Maybe Core.Bool),
+    -- | True to hide connector lines between columns.
+    hideConnectorLines :: (Core.Maybe Core.Bool),
+    -- | The data this waterfall chart is visualizing.
+    series :: (Core.Maybe [WaterfallChartSeries]),
+    -- | The stacked type.
+    stackedType :: (Core.Maybe WaterfallChartSpec_StackedType),
+    -- | Controls whether to display additional data labels on stacked charts which sum the total value of all stacked values at each value along the domain axis. stacked/type must be STACKED and neither CUSTOM nor placement can be set on the total/data_label.
+    totalDataLabel :: (Core.Maybe DataLabel)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'WaterfallChartSpec' with the minimum fields required to make a request.
+newWaterfallChartSpec ::
+  WaterfallChartSpec
+newWaterfallChartSpec =
+  WaterfallChartSpec
+    { connectorLineStyle = Core.Nothing,
+      domain = Core.Nothing,
+      firstValueIsTotal = Core.Nothing,
+      hideConnectorLines = Core.Nothing,
+      series = Core.Nothing,
+      stackedType = Core.Nothing,
+      totalDataLabel = Core.Nothing
+    }
+
+instance Core.FromJSON WaterfallChartSpec where
+  parseJSON =
+    Core.withObject
+      "WaterfallChartSpec"
+      ( \o ->
+          WaterfallChartSpec
+            Core.<$> (o Core..:? "connectorLineStyle")
+            Core.<*> (o Core..:? "domain")
+            Core.<*> (o Core..:? "firstValueIsTotal")
+            Core.<*> (o Core..:? "hideConnectorLines")
+            Core.<*> (o Core..:? "series")
+            Core.<*> (o Core..:? "stackedType")
+            Core.<*> (o Core..:? "totalDataLabel")
+      )
+
+instance Core.ToJSON WaterfallChartSpec where
+  toJSON WaterfallChartSpec {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("connectorLineStyle" Core..=) Core.<$> connectorLineStyle,
+            ("domain" Core..=) Core.<$> domain,
+            ("firstValueIsTotal" Core..=) Core.<$> firstValueIsTotal,
+            ("hideConnectorLines" Core..=) Core.<$> hideConnectorLines,
+            ("series" Core..=) Core.<$> series,
+            ("stackedType" Core..=) Core.<$> stackedType,
+            ("totalDataLabel" Core..=) Core.<$> totalDataLabel
+          ]
+      )
diff --git a/gen/Gogol/Sheets/Internal/Sum.hs b/gen/Gogol/Sheets/Internal/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Internal/Sum.hs
@@ -0,0 +1,5060 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Internal.Sum
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.Sheets.Internal.Sum
+  ( -- * Xgafv
+    Xgafv
+      ( Xgafv_1,
+        Xgafv_2,
+        ..
+      ),
+
+    -- * AppendDimensionRequest_Dimension
+    AppendDimensionRequest_Dimension
+      ( AppendDimensionRequest_Dimension_DIMENSIONUNSPECIFIED,
+        AppendDimensionRequest_Dimension_Rows,
+        AppendDimensionRequest_Dimension_Columns,
+        ..
+      ),
+
+    -- * BaselineValueFormat_ComparisonType
+    BaselineValueFormat_ComparisonType
+      ( BaselineValueFormat_ComparisonType_COMPARISONTYPEUNDEFINED,
+        BaselineValueFormat_ComparisonType_ABSOLUTEDIFFERENCE,
+        BaselineValueFormat_ComparisonType_PERCENTAGEDIFFERENCE,
+        ..
+      ),
+
+    -- * BasicChartAxis_Position
+    BasicChartAxis_Position
+      ( BasicChartAxis_Position_BASICCHARTAXISPOSITIONUNSPECIFIED,
+        BasicChartAxis_Position_BOTTOMAXIS,
+        BasicChartAxis_Position_LEFTAXIS,
+        BasicChartAxis_Position_RIGHTAXIS,
+        ..
+      ),
+
+    -- * BasicChartSeries_TargetAxis
+    BasicChartSeries_TargetAxis
+      ( BasicChartSeries_TargetAxis_BASICCHARTAXISPOSITIONUNSPECIFIED,
+        BasicChartSeries_TargetAxis_BOTTOMAXIS,
+        BasicChartSeries_TargetAxis_LEFTAXIS,
+        BasicChartSeries_TargetAxis_RIGHTAXIS,
+        ..
+      ),
+
+    -- * BasicChartSeries_Type
+    BasicChartSeries_Type
+      ( BasicChartSeries_Type_BASICCHARTTYPEUNSPECIFIED,
+        BasicChartSeries_Type_Bar,
+        BasicChartSeries_Type_Line,
+        BasicChartSeries_Type_Area,
+        BasicChartSeries_Type_Column,
+        BasicChartSeries_Type_Scatter,
+        BasicChartSeries_Type_Combo,
+        BasicChartSeries_Type_STEPPEDAREA,
+        ..
+      ),
+
+    -- * BasicChartSpec_ChartType
+    BasicChartSpec_ChartType
+      ( BasicChartSpec_ChartType_BASICCHARTTYPEUNSPECIFIED,
+        BasicChartSpec_ChartType_Bar,
+        BasicChartSpec_ChartType_Line,
+        BasicChartSpec_ChartType_Area,
+        BasicChartSpec_ChartType_Column,
+        BasicChartSpec_ChartType_Scatter,
+        BasicChartSpec_ChartType_Combo,
+        BasicChartSpec_ChartType_STEPPEDAREA,
+        ..
+      ),
+
+    -- * BasicChartSpec_CompareMode
+    BasicChartSpec_CompareMode
+      ( BasicChartSpec_CompareMode_BASICCHARTCOMPAREMODEUNSPECIFIED,
+        BasicChartSpec_CompareMode_Datum,
+        BasicChartSpec_CompareMode_Category,
+        ..
+      ),
+
+    -- * BasicChartSpec_LegendPosition
+    BasicChartSpec_LegendPosition
+      ( BasicChartSpec_LegendPosition_BASICCHARTLEGENDPOSITIONUNSPECIFIED,
+        BasicChartSpec_LegendPosition_BOTTOMLEGEND,
+        BasicChartSpec_LegendPosition_LEFTLEGEND,
+        BasicChartSpec_LegendPosition_RIGHTLEGEND,
+        BasicChartSpec_LegendPosition_TOPLEGEND,
+        BasicChartSpec_LegendPosition_NOLEGEND,
+        ..
+      ),
+
+    -- * BasicChartSpec_StackedType
+    BasicChartSpec_StackedType
+      ( BasicChartSpec_StackedType_BASICCHARTSTACKEDTYPEUNSPECIFIED,
+        BasicChartSpec_StackedType_NOTSTACKED,
+        BasicChartSpec_StackedType_Stacked,
+        BasicChartSpec_StackedType_PERCENTSTACKED,
+        ..
+      ),
+
+    -- * BatchGetValuesByDataFilterRequest_DateTimeRenderOption
+    BatchGetValuesByDataFilterRequest_DateTimeRenderOption
+      ( BatchGetValuesByDataFilterRequest_DateTimeRenderOption_SERIALNUMBER,
+        BatchGetValuesByDataFilterRequest_DateTimeRenderOption_FORMATTEDSTRING,
+        ..
+      ),
+
+    -- * BatchGetValuesByDataFilterRequest_MajorDimension
+    BatchGetValuesByDataFilterRequest_MajorDimension
+      ( BatchGetValuesByDataFilterRequest_MajorDimension_DIMENSIONUNSPECIFIED,
+        BatchGetValuesByDataFilterRequest_MajorDimension_Rows,
+        BatchGetValuesByDataFilterRequest_MajorDimension_Columns,
+        ..
+      ),
+
+    -- * BatchGetValuesByDataFilterRequest_ValueRenderOption
+    BatchGetValuesByDataFilterRequest_ValueRenderOption
+      ( BatchGetValuesByDataFilterRequest_ValueRenderOption_FORMATTEDVALUE,
+        BatchGetValuesByDataFilterRequest_ValueRenderOption_UNFORMATTEDVALUE,
+        BatchGetValuesByDataFilterRequest_ValueRenderOption_Formula,
+        ..
+      ),
+
+    -- * BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption
+    BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption
+      ( BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption_SERIALNUMBER,
+        BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption_FORMATTEDSTRING,
+        ..
+      ),
+
+    -- * BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption
+    BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption
+      ( BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_FORMATTEDVALUE,
+        BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_UNFORMATTEDVALUE,
+        BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_Formula,
+        ..
+      ),
+
+    -- * BatchUpdateValuesByDataFilterRequest_ValueInputOption
+    BatchUpdateValuesByDataFilterRequest_ValueInputOption
+      ( BatchUpdateValuesByDataFilterRequest_ValueInputOption_INPUTVALUEOPTIONUNSPECIFIED,
+        BatchUpdateValuesByDataFilterRequest_ValueInputOption_Raw,
+        BatchUpdateValuesByDataFilterRequest_ValueInputOption_USERENTERED,
+        ..
+      ),
+
+    -- * BatchUpdateValuesRequest_ResponseDateTimeRenderOption
+    BatchUpdateValuesRequest_ResponseDateTimeRenderOption
+      ( BatchUpdateValuesRequest_ResponseDateTimeRenderOption_SERIALNUMBER,
+        BatchUpdateValuesRequest_ResponseDateTimeRenderOption_FORMATTEDSTRING,
+        ..
+      ),
+
+    -- * BatchUpdateValuesRequest_ResponseValueRenderOption
+    BatchUpdateValuesRequest_ResponseValueRenderOption
+      ( BatchUpdateValuesRequest_ResponseValueRenderOption_FORMATTEDVALUE,
+        BatchUpdateValuesRequest_ResponseValueRenderOption_UNFORMATTEDVALUE,
+        BatchUpdateValuesRequest_ResponseValueRenderOption_Formula,
+        ..
+      ),
+
+    -- * BatchUpdateValuesRequest_ValueInputOption
+    BatchUpdateValuesRequest_ValueInputOption
+      ( BatchUpdateValuesRequest_ValueInputOption_INPUTVALUEOPTIONUNSPECIFIED,
+        BatchUpdateValuesRequest_ValueInputOption_Raw,
+        BatchUpdateValuesRequest_ValueInputOption_USERENTERED,
+        ..
+      ),
+
+    -- * BooleanCondition_Type
+    BooleanCondition_Type
+      ( BooleanCondition_Type_CONDITIONTYPEUNSPECIFIED,
+        BooleanCondition_Type_NUMBERGREATER,
+        BooleanCondition_Type_NUMBERGREATERTHANEQ,
+        BooleanCondition_Type_NUMBERLESS,
+        BooleanCondition_Type_NUMBERLESSTHANEQ,
+        BooleanCondition_Type_NUMBEREQ,
+        BooleanCondition_Type_NUMBERNOTEQ,
+        BooleanCondition_Type_NUMBERBETWEEN,
+        BooleanCondition_Type_NUMBERNOTBETWEEN,
+        BooleanCondition_Type_TEXTCONTAINS,
+        BooleanCondition_Type_TEXTNOTCONTAINS,
+        BooleanCondition_Type_TEXTSTARTSWITH,
+        BooleanCondition_Type_TEXTENDSWITH,
+        BooleanCondition_Type_TEXTEQ,
+        BooleanCondition_Type_TEXTISEMAIL,
+        BooleanCondition_Type_TEXTISURL,
+        BooleanCondition_Type_DATEEQ,
+        BooleanCondition_Type_DATEBEFORE,
+        BooleanCondition_Type_DATEAFTER,
+        BooleanCondition_Type_DATEONORBEFORE,
+        BooleanCondition_Type_DATEONORAFTER,
+        BooleanCondition_Type_DATEBETWEEN,
+        BooleanCondition_Type_DATENOTBETWEEN,
+        BooleanCondition_Type_DATEISVALID,
+        BooleanCondition_Type_ONEOFRANGE,
+        BooleanCondition_Type_ONEOFLIST,
+        BooleanCondition_Type_Blank,
+        BooleanCondition_Type_NOTBLANK,
+        BooleanCondition_Type_CUSTOMFORMULA,
+        BooleanCondition_Type_Boolean,
+        BooleanCondition_Type_TEXTNOTEQ,
+        BooleanCondition_Type_DATENOTEQ,
+        BooleanCondition_Type_FILTEREXPRESSION,
+        ..
+      ),
+
+    -- * Border_Style
+    Border_Style
+      ( Border_Style_STYLEUNSPECIFIED,
+        Border_Style_Dotted,
+        Border_Style_Dashed,
+        Border_Style_Solid,
+        Border_Style_SOLIDMEDIUM,
+        Border_Style_SOLIDTHICK,
+        Border_Style_None,
+        Border_Style_Double,
+        ..
+      ),
+
+    -- * BubbleChartSpec_LegendPosition
+    BubbleChartSpec_LegendPosition
+      ( BubbleChartSpec_LegendPosition_BUBBLECHARTLEGENDPOSITIONUNSPECIFIED,
+        BubbleChartSpec_LegendPosition_BOTTOMLEGEND,
+        BubbleChartSpec_LegendPosition_LEFTLEGEND,
+        BubbleChartSpec_LegendPosition_RIGHTLEGEND,
+        BubbleChartSpec_LegendPosition_TOPLEGEND,
+        BubbleChartSpec_LegendPosition_NOLEGEND,
+        BubbleChartSpec_LegendPosition_INSIDELEGEND,
+        ..
+      ),
+
+    -- * CellFormat_HorizontalAlignment
+    CellFormat_HorizontalAlignment
+      ( CellFormat_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED,
+        CellFormat_HorizontalAlignment_Left',
+        CellFormat_HorizontalAlignment_Center,
+        CellFormat_HorizontalAlignment_Right',
+        ..
+      ),
+
+    -- * CellFormat_HyperlinkDisplayType
+    CellFormat_HyperlinkDisplayType
+      ( CellFormat_HyperlinkDisplayType_HYPERLINKDISPLAYTYPEUNSPECIFIED,
+        CellFormat_HyperlinkDisplayType_Linked,
+        CellFormat_HyperlinkDisplayType_PLAINTEXT,
+        ..
+      ),
+
+    -- * CellFormat_TextDirection
+    CellFormat_TextDirection
+      ( CellFormat_TextDirection_TEXTDIRECTIONUNSPECIFIED,
+        CellFormat_TextDirection_LEFTTORIGHT,
+        CellFormat_TextDirection_RIGHTTOLEFT,
+        ..
+      ),
+
+    -- * CellFormat_VerticalAlignment
+    CellFormat_VerticalAlignment
+      ( CellFormat_VerticalAlignment_VERTICALALIGNUNSPECIFIED,
+        CellFormat_VerticalAlignment_Top,
+        CellFormat_VerticalAlignment_Middle,
+        CellFormat_VerticalAlignment_Bottom,
+        ..
+      ),
+
+    -- * CellFormat_WrapStrategy
+    CellFormat_WrapStrategy
+      ( CellFormat_WrapStrategy_WRAPSTRATEGYUNSPECIFIED,
+        CellFormat_WrapStrategy_OVERFLOWCELL,
+        CellFormat_WrapStrategy_LEGACYWRAP,
+        CellFormat_WrapStrategy_Clip,
+        CellFormat_WrapStrategy_Wrap,
+        ..
+      ),
+
+    -- * ChartAxisViewWindowOptions_ViewWindowMode
+    ChartAxisViewWindowOptions_ViewWindowMode
+      ( ChartAxisViewWindowOptions_ViewWindowMode_DEFAULTVIEWWINDOWMODE,
+        ChartAxisViewWindowOptions_ViewWindowMode_VIEWWINDOWMODEUNSUPPORTED,
+        ChartAxisViewWindowOptions_ViewWindowMode_Explicit,
+        ChartAxisViewWindowOptions_ViewWindowMode_Pretty,
+        ..
+      ),
+
+    -- * ChartData_AggregateType
+    ChartData_AggregateType
+      ( ChartData_AggregateType_CHARTAGGREGATETYPEUNSPECIFIED,
+        ChartData_AggregateType_Average,
+        ChartData_AggregateType_Count,
+        ChartData_AggregateType_Max,
+        ChartData_AggregateType_Median,
+        ChartData_AggregateType_Min,
+        ChartData_AggregateType_Sum,
+        ..
+      ),
+
+    -- * ChartDateTimeRule_Type
+    ChartDateTimeRule_Type
+      ( ChartDateTimeRule_Type_CHARTDATETIMERULETYPEUNSPECIFIED,
+        ChartDateTimeRule_Type_Second,
+        ChartDateTimeRule_Type_Minute,
+        ChartDateTimeRule_Type_Hour,
+        ChartDateTimeRule_Type_HOURMINUTE,
+        ChartDateTimeRule_Type_HOURMINUTEAMPM,
+        ChartDateTimeRule_Type_DAYOFWEEK,
+        ChartDateTimeRule_Type_DAYOFYEAR,
+        ChartDateTimeRule_Type_DAYOFMONTH,
+        ChartDateTimeRule_Type_DAYMONTH,
+        ChartDateTimeRule_Type_Month,
+        ChartDateTimeRule_Type_Quarter,
+        ChartDateTimeRule_Type_Year,
+        ChartDateTimeRule_Type_YEARMONTH,
+        ChartDateTimeRule_Type_YEARQUARTER,
+        ChartDateTimeRule_Type_YEARMONTHDAY,
+        ..
+      ),
+
+    -- * ChartSpec_HiddenDimensionStrategy
+    ChartSpec_HiddenDimensionStrategy
+      ( ChartSpec_HiddenDimensionStrategy_CHARTHIDDENDIMENSIONSTRATEGYUNSPECIFIED,
+        ChartSpec_HiddenDimensionStrategy_SKIPHIDDENROWSANDCOLUMNS,
+        ChartSpec_HiddenDimensionStrategy_SKIPHIDDENROWS,
+        ChartSpec_HiddenDimensionStrategy_SKIPHIDDENCOLUMNS,
+        ChartSpec_HiddenDimensionStrategy_SHOWALL,
+        ..
+      ),
+
+    -- * ColorStyle_ThemeColor
+    ColorStyle_ThemeColor
+      ( ColorStyle_ThemeColor_THEMECOLORTYPEUNSPECIFIED,
+        ColorStyle_ThemeColor_Text,
+        ColorStyle_ThemeColor_Background,
+        ColorStyle_ThemeColor_ACCENT1,
+        ColorStyle_ThemeColor_ACCENT2,
+        ColorStyle_ThemeColor_ACCENT3,
+        ColorStyle_ThemeColor_ACCENT4,
+        ColorStyle_ThemeColor_ACCENT5,
+        ColorStyle_ThemeColor_ACCENT6,
+        ColorStyle_ThemeColor_Link,
+        ..
+      ),
+
+    -- * ConditionValue_RelativeDate
+    ConditionValue_RelativeDate
+      ( ConditionValue_RelativeDate_RELATIVEDATEUNSPECIFIED,
+        ConditionValue_RelativeDate_PASTYEAR,
+        ConditionValue_RelativeDate_PASTMONTH,
+        ConditionValue_RelativeDate_PASTWEEK,
+        ConditionValue_RelativeDate_Yesterday,
+        ConditionValue_RelativeDate_Today,
+        ConditionValue_RelativeDate_Tomorrow,
+        ..
+      ),
+
+    -- * CopyPasteRequest_PasteOrientation
+    CopyPasteRequest_PasteOrientation
+      ( CopyPasteRequest_PasteOrientation_Normal,
+        CopyPasteRequest_PasteOrientation_Transpose,
+        ..
+      ),
+
+    -- * CopyPasteRequest_PasteType
+    CopyPasteRequest_PasteType
+      ( CopyPasteRequest_PasteType_PASTENORMAL,
+        CopyPasteRequest_PasteType_PASTEVALUES,
+        CopyPasteRequest_PasteType_PASTEFORMAT,
+        CopyPasteRequest_PasteType_PASTENOBORDERS,
+        CopyPasteRequest_PasteType_PASTEFORMULA,
+        CopyPasteRequest_PasteType_PASTEDATAVALIDATION,
+        CopyPasteRequest_PasteType_PASTECONDITIONALFORMATTING,
+        ..
+      ),
+
+    -- * CutPasteRequest_PasteType
+    CutPasteRequest_PasteType
+      ( CutPasteRequest_PasteType_PASTENORMAL,
+        CutPasteRequest_PasteType_PASTEVALUES,
+        CutPasteRequest_PasteType_PASTEFORMAT,
+        CutPasteRequest_PasteType_PASTENOBORDERS,
+        CutPasteRequest_PasteType_PASTEFORMULA,
+        CutPasteRequest_PasteType_PASTEDATAVALIDATION,
+        CutPasteRequest_PasteType_PASTECONDITIONALFORMATTING,
+        ..
+      ),
+
+    -- * DataExecutionStatus_ErrorCode
+    DataExecutionStatus_ErrorCode
+      ( DataExecutionStatus_ErrorCode_DATAEXECUTIONERRORCODEUNSPECIFIED,
+        DataExecutionStatus_ErrorCode_TIMEDOUT,
+        DataExecutionStatus_ErrorCode_TOOMANYROWS,
+        DataExecutionStatus_ErrorCode_TOOMANYCOLUMNS,
+        DataExecutionStatus_ErrorCode_TOOMANYCELLS,
+        DataExecutionStatus_ErrorCode_Engine,
+        DataExecutionStatus_ErrorCode_PARAMETERINVALID,
+        DataExecutionStatus_ErrorCode_UNSUPPORTEDDATATYPE,
+        DataExecutionStatus_ErrorCode_DUPLICATECOLUMNNAMES,
+        DataExecutionStatus_ErrorCode_Interrupted,
+        DataExecutionStatus_ErrorCode_CONCURRENTQUERY,
+        DataExecutionStatus_ErrorCode_Other,
+        DataExecutionStatus_ErrorCode_TOOMANYCHARSPERCELL,
+        DataExecutionStatus_ErrorCode_DATANOTFOUND,
+        DataExecutionStatus_ErrorCode_PERMISSIONDENIED,
+        DataExecutionStatus_ErrorCode_MISSINGCOLUMNALIAS,
+        DataExecutionStatus_ErrorCode_OBJECTNOTFOUND,
+        DataExecutionStatus_ErrorCode_OBJECTINERRORSTATE,
+        DataExecutionStatus_ErrorCode_OBJECTSPECINVALID,
+        DataExecutionStatus_ErrorCode_DATAEXECUTIONCANCELLED,
+        ..
+      ),
+
+    -- * DataExecutionStatus_State
+    DataExecutionStatus_State
+      ( DataExecutionStatus_State_DATAEXECUTIONSTATEUNSPECIFIED,
+        DataExecutionStatus_State_NOTSTARTED,
+        DataExecutionStatus_State_Running,
+        DataExecutionStatus_State_Cancelling,
+        DataExecutionStatus_State_Succeeded,
+        DataExecutionStatus_State_Failed,
+        ..
+      ),
+
+    -- * DataFilterValueRange_MajorDimension
+    DataFilterValueRange_MajorDimension
+      ( DataFilterValueRange_MajorDimension_DIMENSIONUNSPECIFIED,
+        DataFilterValueRange_MajorDimension_Rows,
+        DataFilterValueRange_MajorDimension_Columns,
+        ..
+      ),
+
+    -- * DataLabel_Placement
+    DataLabel_Placement
+      ( DataLabel_Placement_DATALABELPLACEMENTUNSPECIFIED,
+        DataLabel_Placement_Center,
+        DataLabel_Placement_Left',
+        DataLabel_Placement_Right',
+        DataLabel_Placement_Above,
+        DataLabel_Placement_Below,
+        DataLabel_Placement_INSIDEEND,
+        DataLabel_Placement_INSIDEBASE,
+        DataLabel_Placement_OUTSIDEEND,
+        ..
+      ),
+
+    -- * DataLabel_Type
+    DataLabel_Type
+      ( DataLabel_Type_DATALABELTYPEUNSPECIFIED,
+        DataLabel_Type_None,
+        DataLabel_Type_Data',
+        DataLabel_Type_Custom,
+        ..
+      ),
+
+    -- * DataSourceRefreshSchedule_RefreshScope
+    DataSourceRefreshSchedule_RefreshScope
+      ( DataSourceRefreshSchedule_RefreshScope_DATASOURCEREFRESHSCOPEUNSPECIFIED,
+        DataSourceRefreshSchedule_RefreshScope_ALLDATASOURCES,
+        ..
+      ),
+
+    -- * DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+    DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+      ( DataSourceRefreshWeeklySchedule_DaysOfWeekItem_DAYOFWEEKUNSPECIFIED,
+        DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Monday,
+        DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Tuesday,
+        DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Wednesday,
+        DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Thursday,
+        DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Friday,
+        DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Saturday,
+        DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Sunday,
+        ..
+      ),
+
+    -- * DataSourceTable_ColumnSelectionType
+    DataSourceTable_ColumnSelectionType
+      ( DataSourceTable_ColumnSelectionType_DATASOURCETABLECOLUMNSELECTIONTYPEUNSPECIFIED,
+        DataSourceTable_ColumnSelectionType_Selected,
+        DataSourceTable_ColumnSelectionType_SYNCALL,
+        ..
+      ),
+
+    -- * DateTimeRule_Type
+    DateTimeRule_Type
+      ( DateTimeRule_Type_DATETIMERULETYPEUNSPECIFIED,
+        DateTimeRule_Type_Second,
+        DateTimeRule_Type_Minute,
+        DateTimeRule_Type_Hour,
+        DateTimeRule_Type_HOURMINUTE,
+        DateTimeRule_Type_HOURMINUTEAMPM,
+        DateTimeRule_Type_DAYOFWEEK,
+        DateTimeRule_Type_DAYOFYEAR,
+        DateTimeRule_Type_DAYOFMONTH,
+        DateTimeRule_Type_DAYMONTH,
+        DateTimeRule_Type_Month,
+        DateTimeRule_Type_Quarter,
+        DateTimeRule_Type_Year,
+        DateTimeRule_Type_YEARMONTH,
+        DateTimeRule_Type_YEARQUARTER,
+        DateTimeRule_Type_YEARMONTHDAY,
+        ..
+      ),
+
+    -- * DeleteRangeRequest_ShiftDimension
+    DeleteRangeRequest_ShiftDimension
+      ( DeleteRangeRequest_ShiftDimension_DIMENSIONUNSPECIFIED,
+        DeleteRangeRequest_ShiftDimension_Rows,
+        DeleteRangeRequest_ShiftDimension_Columns,
+        ..
+      ),
+
+    -- * DeveloperMetadata_Visibility
+    DeveloperMetadata_Visibility
+      ( DeveloperMetadata_Visibility_DEVELOPERMETADATAVISIBILITYUNSPECIFIED,
+        DeveloperMetadata_Visibility_Document,
+        DeveloperMetadata_Visibility_Project,
+        ..
+      ),
+
+    -- * DeveloperMetadataLocation_LocationType
+    DeveloperMetadataLocation_LocationType
+      ( DeveloperMetadataLocation_LocationType_DEVELOPERMETADATALOCATIONTYPEUNSPECIFIED,
+        DeveloperMetadataLocation_LocationType_Row,
+        DeveloperMetadataLocation_LocationType_Column,
+        DeveloperMetadataLocation_LocationType_Sheet,
+        DeveloperMetadataLocation_LocationType_Spreadsheet,
+        ..
+      ),
+
+    -- * DeveloperMetadataLookup_LocationMatchingStrategy
+    DeveloperMetadataLookup_LocationMatchingStrategy
+      ( DeveloperMetadataLookup_LocationMatchingStrategy_DEVELOPERMETADATALOCATIONMATCHINGSTRATEGYUNSPECIFIED,
+        DeveloperMetadataLookup_LocationMatchingStrategy_EXACTLOCATION,
+        DeveloperMetadataLookup_LocationMatchingStrategy_INTERSECTINGLOCATION,
+        ..
+      ),
+
+    -- * DeveloperMetadataLookup_LocationType
+    DeveloperMetadataLookup_LocationType
+      ( DeveloperMetadataLookup_LocationType_DEVELOPERMETADATALOCATIONTYPEUNSPECIFIED,
+        DeveloperMetadataLookup_LocationType_Row,
+        DeveloperMetadataLookup_LocationType_Column,
+        DeveloperMetadataLookup_LocationType_Sheet,
+        DeveloperMetadataLookup_LocationType_Spreadsheet,
+        ..
+      ),
+
+    -- * DeveloperMetadataLookup_Visibility
+    DeveloperMetadataLookup_Visibility
+      ( DeveloperMetadataLookup_Visibility_DEVELOPERMETADATAVISIBILITYUNSPECIFIED,
+        DeveloperMetadataLookup_Visibility_Document,
+        DeveloperMetadataLookup_Visibility_Project,
+        ..
+      ),
+
+    -- * DimensionRange_Dimension
+    DimensionRange_Dimension
+      ( DimensionRange_Dimension_DIMENSIONUNSPECIFIED,
+        DimensionRange_Dimension_Rows,
+        DimensionRange_Dimension_Columns,
+        ..
+      ),
+
+    -- * ErrorValue_Type
+    ErrorValue_Type
+      ( ErrorValue_Type_ERRORTYPEUNSPECIFIED,
+        ErrorValue_Type_Error',
+        ErrorValue_Type_NULLVALUE,
+        ErrorValue_Type_DIVIDEBYZERO,
+        ErrorValue_Type_Value,
+        ErrorValue_Type_Ref,
+        ErrorValue_Type_Name,
+        ErrorValue_Type_Num,
+        ErrorValue_Type_NA,
+        ErrorValue_Type_Loading,
+        ..
+      ),
+
+    -- * HistogramChartSpec_LegendPosition
+    HistogramChartSpec_LegendPosition
+      ( HistogramChartSpec_LegendPosition_HISTOGRAMCHARTLEGENDPOSITIONUNSPECIFIED,
+        HistogramChartSpec_LegendPosition_BOTTOMLEGEND,
+        HistogramChartSpec_LegendPosition_LEFTLEGEND,
+        HistogramChartSpec_LegendPosition_RIGHTLEGEND,
+        HistogramChartSpec_LegendPosition_TOPLEGEND,
+        HistogramChartSpec_LegendPosition_NOLEGEND,
+        HistogramChartSpec_LegendPosition_INSIDELEGEND,
+        ..
+      ),
+
+    -- * InsertRangeRequest_ShiftDimension
+    InsertRangeRequest_ShiftDimension
+      ( InsertRangeRequest_ShiftDimension_DIMENSIONUNSPECIFIED,
+        InsertRangeRequest_ShiftDimension_Rows,
+        InsertRangeRequest_ShiftDimension_Columns,
+        ..
+      ),
+
+    -- * InterpolationPoint_Type
+    InterpolationPoint_Type
+      ( InterpolationPoint_Type_INTERPOLATIONPOINTTYPEUNSPECIFIED,
+        InterpolationPoint_Type_Min,
+        InterpolationPoint_Type_Max,
+        InterpolationPoint_Type_Number,
+        InterpolationPoint_Type_Percent,
+        InterpolationPoint_Type_Percentile,
+        ..
+      ),
+
+    -- * LineStyle_Type
+    LineStyle_Type
+      ( LineStyle_Type_LINEDASHTYPEUNSPECIFIED,
+        LineStyle_Type_Invisible,
+        LineStyle_Type_Custom,
+        LineStyle_Type_Solid,
+        LineStyle_Type_Dotted,
+        LineStyle_Type_MEDIUMDASHED,
+        LineStyle_Type_MEDIUMDASHEDDOTTED,
+        LineStyle_Type_LONGDASHED,
+        LineStyle_Type_LONGDASHEDDOTTED,
+        ..
+      ),
+
+    -- * MergeCellsRequest_MergeType
+    MergeCellsRequest_MergeType
+      ( MergeCellsRequest_MergeType_MERGEALL,
+        MergeCellsRequest_MergeType_MERGECOLUMNS,
+        MergeCellsRequest_MergeType_MERGEROWS,
+        ..
+      ),
+
+    -- * NumberFormat_Type
+    NumberFormat_Type
+      ( NumberFormat_Type_NUMBERFORMATTYPEUNSPECIFIED,
+        NumberFormat_Type_Text,
+        NumberFormat_Type_Number,
+        NumberFormat_Type_Percent,
+        NumberFormat_Type_Currency,
+        NumberFormat_Type_Date,
+        NumberFormat_Type_Time,
+        NumberFormat_Type_DATETIME,
+        NumberFormat_Type_Scientific,
+        ..
+      ),
+
+    -- * OrgChartSpec_NodeSize
+    OrgChartSpec_NodeSize
+      ( OrgChartSpec_NodeSize_ORGCHARTLABELSIZEUNSPECIFIED,
+        OrgChartSpec_NodeSize_Small,
+        OrgChartSpec_NodeSize_Medium,
+        OrgChartSpec_NodeSize_Large,
+        ..
+      ),
+
+    -- * PasteDataRequest_Type
+    PasteDataRequest_Type
+      ( PasteDataRequest_Type_PASTENORMAL,
+        PasteDataRequest_Type_PASTEVALUES,
+        PasteDataRequest_Type_PASTEFORMAT,
+        PasteDataRequest_Type_PASTENOBORDERS,
+        PasteDataRequest_Type_PASTEFORMULA,
+        PasteDataRequest_Type_PASTEDATAVALIDATION,
+        PasteDataRequest_Type_PASTECONDITIONALFORMATTING,
+        ..
+      ),
+
+    -- * PieChartSpec_LegendPosition
+    PieChartSpec_LegendPosition
+      ( PieChartSpec_LegendPosition_PIECHARTLEGENDPOSITIONUNSPECIFIED,
+        PieChartSpec_LegendPosition_BOTTOMLEGEND,
+        PieChartSpec_LegendPosition_LEFTLEGEND,
+        PieChartSpec_LegendPosition_RIGHTLEGEND,
+        PieChartSpec_LegendPosition_TOPLEGEND,
+        PieChartSpec_LegendPosition_NOLEGEND,
+        PieChartSpec_LegendPosition_LABELEDLEGEND,
+        ..
+      ),
+
+    -- * PivotGroup_SortOrder
+    PivotGroup_SortOrder
+      ( PivotGroup_SortOrder_SORTORDERUNSPECIFIED,
+        PivotGroup_SortOrder_Ascending,
+        PivotGroup_SortOrder_Descending,
+        ..
+      ),
+
+    -- * PivotTable_ValueLayout
+    PivotTable_ValueLayout
+      ( PivotTable_ValueLayout_Horizontal,
+        PivotTable_ValueLayout_Vertical,
+        ..
+      ),
+
+    -- * PivotValue_CalculatedDisplayType
+    PivotValue_CalculatedDisplayType
+      ( PivotValue_CalculatedDisplayType_PIVOTVALUECALCULATEDDISPLAYTYPEUNSPECIFIED,
+        PivotValue_CalculatedDisplayType_PERCENTOFROWTOTAL,
+        PivotValue_CalculatedDisplayType_PERCENTOFCOLUMNTOTAL,
+        PivotValue_CalculatedDisplayType_PERCENTOFGRANDTOTAL,
+        ..
+      ),
+
+    -- * PivotValue_SummarizeFunction
+    PivotValue_SummarizeFunction
+      ( PivotValue_SummarizeFunction_PIVOTSTANDARDVALUEFUNCTIONUNSPECIFIED,
+        PivotValue_SummarizeFunction_Sum,
+        PivotValue_SummarizeFunction_Counta,
+        PivotValue_SummarizeFunction_Count,
+        PivotValue_SummarizeFunction_Countunique,
+        PivotValue_SummarizeFunction_Average,
+        PivotValue_SummarizeFunction_Max,
+        PivotValue_SummarizeFunction_Min,
+        PivotValue_SummarizeFunction_Median,
+        PivotValue_SummarizeFunction_Product,
+        PivotValue_SummarizeFunction_Stdev,
+        PivotValue_SummarizeFunction_Stdevp,
+        PivotValue_SummarizeFunction_Var,
+        PivotValue_SummarizeFunction_Varp,
+        PivotValue_SummarizeFunction_Custom,
+        PivotValue_SummarizeFunction_None,
+        ..
+      ),
+
+    -- * PointStyle_Shape
+    PointStyle_Shape
+      ( PointStyle_Shape_POINTSHAPEUNSPECIFIED,
+        PointStyle_Shape_Circle,
+        PointStyle_Shape_Diamond,
+        PointStyle_Shape_Hexagon,
+        PointStyle_Shape_Pentagon,
+        PointStyle_Shape_Square,
+        PointStyle_Shape_Star,
+        PointStyle_Shape_Triangle,
+        PointStyle_Shape_XMARK,
+        ..
+      ),
+
+    -- * RefreshCancellationStatus_ErrorCode
+    RefreshCancellationStatus_ErrorCode
+      ( RefreshCancellationStatus_ErrorCode_REFRESHCANCELLATIONERRORCODEUNSPECIFIED,
+        RefreshCancellationStatus_ErrorCode_EXECUTIONNOTFOUND,
+        RefreshCancellationStatus_ErrorCode_CANCELPERMISSIONDENIED,
+        RefreshCancellationStatus_ErrorCode_QUERYEXECUTIONCOMPLETED,
+        RefreshCancellationStatus_ErrorCode_CONCURRENTCANCELLATION,
+        RefreshCancellationStatus_ErrorCode_CANCELOTHERERROR,
+        ..
+      ),
+
+    -- * RefreshCancellationStatus_State
+    RefreshCancellationStatus_State
+      ( RefreshCancellationStatus_State_REFRESHCANCELLATIONSTATEUNSPECIFIED,
+        RefreshCancellationStatus_State_CANCELSUCCEEDED,
+        RefreshCancellationStatus_State_CANCELFAILED,
+        ..
+      ),
+
+    -- * ScorecardChartSpec_AggregateType
+    ScorecardChartSpec_AggregateType
+      ( ScorecardChartSpec_AggregateType_CHARTAGGREGATETYPEUNSPECIFIED,
+        ScorecardChartSpec_AggregateType_Average,
+        ScorecardChartSpec_AggregateType_Count,
+        ScorecardChartSpec_AggregateType_Max,
+        ScorecardChartSpec_AggregateType_Median,
+        ScorecardChartSpec_AggregateType_Min,
+        ScorecardChartSpec_AggregateType_Sum,
+        ..
+      ),
+
+    -- * ScorecardChartSpec_NumberFormatSource
+    ScorecardChartSpec_NumberFormatSource
+      ( ScorecardChartSpec_NumberFormatSource_CHARTNUMBERFORMATSOURCEUNDEFINED,
+        ScorecardChartSpec_NumberFormatSource_FROMDATA,
+        ScorecardChartSpec_NumberFormatSource_Custom,
+        ..
+      ),
+
+    -- * SheetProperties_SheetType
+    SheetProperties_SheetType
+      ( SheetProperties_SheetType_SHEETTYPEUNSPECIFIED,
+        SheetProperties_SheetType_Grid,
+        SheetProperties_SheetType_Object,
+        SheetProperties_SheetType_DATASOURCE,
+        ..
+      ),
+
+    -- * SlicerSpec_HorizontalAlignment
+    SlicerSpec_HorizontalAlignment
+      ( SlicerSpec_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED,
+        SlicerSpec_HorizontalAlignment_Left',
+        SlicerSpec_HorizontalAlignment_Center,
+        SlicerSpec_HorizontalAlignment_Right',
+        ..
+      ),
+
+    -- * SortSpec_SortOrder
+    SortSpec_SortOrder
+      ( SortSpec_SortOrder_SORTORDERUNSPECIFIED,
+        SortSpec_SortOrder_Ascending,
+        SortSpec_SortOrder_Descending,
+        ..
+      ),
+
+    -- * SourceAndDestination_Dimension
+    SourceAndDestination_Dimension
+      ( SourceAndDestination_Dimension_DIMENSIONUNSPECIFIED,
+        SourceAndDestination_Dimension_Rows,
+        SourceAndDestination_Dimension_Columns,
+        ..
+      ),
+
+    -- * SpreadsheetProperties_AutoRecalc
+    SpreadsheetProperties_AutoRecalc
+      ( SpreadsheetProperties_AutoRecalc_RECALCULATIONINTERVALUNSPECIFIED,
+        SpreadsheetProperties_AutoRecalc_ONCHANGE,
+        SpreadsheetProperties_AutoRecalc_Minute,
+        SpreadsheetProperties_AutoRecalc_Hour,
+        ..
+      ),
+
+    -- * TextPosition_HorizontalAlignment
+    TextPosition_HorizontalAlignment
+      ( TextPosition_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED,
+        TextPosition_HorizontalAlignment_Left',
+        TextPosition_HorizontalAlignment_Center,
+        TextPosition_HorizontalAlignment_Right',
+        ..
+      ),
+
+    -- * TextToColumnsRequest_DelimiterType
+    TextToColumnsRequest_DelimiterType
+      ( TextToColumnsRequest_DelimiterType_DELIMITERTYPEUNSPECIFIED,
+        TextToColumnsRequest_DelimiterType_Comma,
+        TextToColumnsRequest_DelimiterType_Semicolon,
+        TextToColumnsRequest_DelimiterType_Period,
+        TextToColumnsRequest_DelimiterType_Space,
+        TextToColumnsRequest_DelimiterType_Custom,
+        TextToColumnsRequest_DelimiterType_Autodetect,
+        ..
+      ),
+
+    -- * ThemeColorPair_ColorType
+    ThemeColorPair_ColorType
+      ( ThemeColorPair_ColorType_THEMECOLORTYPEUNSPECIFIED,
+        ThemeColorPair_ColorType_Text,
+        ThemeColorPair_ColorType_Background,
+        ThemeColorPair_ColorType_ACCENT1,
+        ThemeColorPair_ColorType_ACCENT2,
+        ThemeColorPair_ColorType_ACCENT3,
+        ThemeColorPair_ColorType_ACCENT4,
+        ThemeColorPair_ColorType_ACCENT5,
+        ThemeColorPair_ColorType_ACCENT6,
+        ThemeColorPair_ColorType_Link,
+        ..
+      ),
+
+    -- * ValueRange_MajorDimension
+    ValueRange_MajorDimension
+      ( ValueRange_MajorDimension_DIMENSIONUNSPECIFIED,
+        ValueRange_MajorDimension_Rows,
+        ValueRange_MajorDimension_Columns,
+        ..
+      ),
+
+    -- * WaterfallChartSpec_StackedType
+    WaterfallChartSpec_StackedType
+      ( WaterfallChartSpec_StackedType_WATERFALLSTACKEDTYPEUNSPECIFIED,
+        WaterfallChartSpec_StackedType_Stacked,
+        WaterfallChartSpec_StackedType_Sequential,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesAppendInsertDataOption
+    SpreadsheetsValuesAppendInsertDataOption
+      ( SpreadsheetsValuesAppendInsertDataOption_Overwrite,
+        SpreadsheetsValuesAppendInsertDataOption_INSERTROWS,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesAppendResponseDateTimeRenderOption
+    SpreadsheetsValuesAppendResponseDateTimeRenderOption
+      ( SpreadsheetsValuesAppendResponseDateTimeRenderOption_SERIALNUMBER,
+        SpreadsheetsValuesAppendResponseDateTimeRenderOption_FORMATTEDSTRING,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesAppendResponseValueRenderOption
+    SpreadsheetsValuesAppendResponseValueRenderOption
+      ( SpreadsheetsValuesAppendResponseValueRenderOption_FORMATTEDVALUE,
+        SpreadsheetsValuesAppendResponseValueRenderOption_UNFORMATTEDVALUE,
+        SpreadsheetsValuesAppendResponseValueRenderOption_Formula,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesAppendValueInputOption
+    SpreadsheetsValuesAppendValueInputOption
+      ( SpreadsheetsValuesAppendValueInputOption_INPUTVALUEOPTIONUNSPECIFIED,
+        SpreadsheetsValuesAppendValueInputOption_Raw,
+        SpreadsheetsValuesAppendValueInputOption_USERENTERED,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesBatchGetDateTimeRenderOption
+    SpreadsheetsValuesBatchGetDateTimeRenderOption
+      ( SpreadsheetsValuesBatchGetDateTimeRenderOption_SERIALNUMBER,
+        SpreadsheetsValuesBatchGetDateTimeRenderOption_FORMATTEDSTRING,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesBatchGetMajorDimension
+    SpreadsheetsValuesBatchGetMajorDimension
+      ( SpreadsheetsValuesBatchGetMajorDimension_DIMENSIONUNSPECIFIED,
+        SpreadsheetsValuesBatchGetMajorDimension_Rows,
+        SpreadsheetsValuesBatchGetMajorDimension_Columns,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesBatchGetValueRenderOption
+    SpreadsheetsValuesBatchGetValueRenderOption
+      ( SpreadsheetsValuesBatchGetValueRenderOption_FORMATTEDVALUE,
+        SpreadsheetsValuesBatchGetValueRenderOption_UNFORMATTEDVALUE,
+        SpreadsheetsValuesBatchGetValueRenderOption_Formula,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesGetDateTimeRenderOption
+    SpreadsheetsValuesGetDateTimeRenderOption
+      ( SpreadsheetsValuesGetDateTimeRenderOption_SERIALNUMBER,
+        SpreadsheetsValuesGetDateTimeRenderOption_FORMATTEDSTRING,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesGetMajorDimension
+    SpreadsheetsValuesGetMajorDimension
+      ( SpreadsheetsValuesGetMajorDimension_DIMENSIONUNSPECIFIED,
+        SpreadsheetsValuesGetMajorDimension_Rows,
+        SpreadsheetsValuesGetMajorDimension_Columns,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesGetValueRenderOption
+    SpreadsheetsValuesGetValueRenderOption
+      ( SpreadsheetsValuesGetValueRenderOption_FORMATTEDVALUE,
+        SpreadsheetsValuesGetValueRenderOption_UNFORMATTEDVALUE,
+        SpreadsheetsValuesGetValueRenderOption_Formula,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesUpdateResponseDateTimeRenderOption
+    SpreadsheetsValuesUpdateResponseDateTimeRenderOption
+      ( SpreadsheetsValuesUpdateResponseDateTimeRenderOption_SERIALNUMBER,
+        SpreadsheetsValuesUpdateResponseDateTimeRenderOption_FORMATTEDSTRING,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesUpdateResponseValueRenderOption
+    SpreadsheetsValuesUpdateResponseValueRenderOption
+      ( SpreadsheetsValuesUpdateResponseValueRenderOption_FORMATTEDVALUE,
+        SpreadsheetsValuesUpdateResponseValueRenderOption_UNFORMATTEDVALUE,
+        SpreadsheetsValuesUpdateResponseValueRenderOption_Formula,
+        ..
+      ),
+
+    -- * SpreadsheetsValuesUpdateValueInputOption
+    SpreadsheetsValuesUpdateValueInputOption
+      ( SpreadsheetsValuesUpdateValueInputOption_INPUTVALUEOPTIONUNSPECIFIED,
+        SpreadsheetsValuesUpdateValueInputOption_Raw,
+        SpreadsheetsValuesUpdateValueInputOption_USERENTERED,
+        ..
+      ),
+  )
+where
+
+import Gogol.Prelude qualified as Core
+
+-- | V1 error format.
+newtype Xgafv = Xgafv {fromXgafv :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | v1 error format
+pattern Xgafv_1 :: Xgafv
+pattern Xgafv_1 = Xgafv "1"
+
+-- | v2 error format
+pattern Xgafv_2 :: Xgafv
+pattern Xgafv_2 = Xgafv "2"
+
+{-# COMPLETE
+  Xgafv_1,
+  Xgafv_2,
+  Xgafv
+  #-}
+
+-- | Whether rows or columns should be appended.
+newtype AppendDimensionRequest_Dimension = AppendDimensionRequest_Dimension {fromAppendDimensionRequest_Dimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern AppendDimensionRequest_Dimension_DIMENSIONUNSPECIFIED :: AppendDimensionRequest_Dimension
+pattern AppendDimensionRequest_Dimension_DIMENSIONUNSPECIFIED = AppendDimensionRequest_Dimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern AppendDimensionRequest_Dimension_Rows :: AppendDimensionRequest_Dimension
+pattern AppendDimensionRequest_Dimension_Rows = AppendDimensionRequest_Dimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern AppendDimensionRequest_Dimension_Columns :: AppendDimensionRequest_Dimension
+pattern AppendDimensionRequest_Dimension_Columns = AppendDimensionRequest_Dimension "COLUMNS"
+
+{-# COMPLETE
+  AppendDimensionRequest_Dimension_DIMENSIONUNSPECIFIED,
+  AppendDimensionRequest_Dimension_Rows,
+  AppendDimensionRequest_Dimension_Columns,
+  AppendDimensionRequest_Dimension
+  #-}
+
+-- | The comparison type of key value with baseline value.
+newtype BaselineValueFormat_ComparisonType = BaselineValueFormat_ComparisonType {fromBaselineValueFormat_ComparisonType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern BaselineValueFormat_ComparisonType_COMPARISONTYPEUNDEFINED :: BaselineValueFormat_ComparisonType
+pattern BaselineValueFormat_ComparisonType_COMPARISONTYPEUNDEFINED = BaselineValueFormat_ComparisonType "COMPARISON_TYPE_UNDEFINED"
+
+-- | Use absolute difference between key and baseline value.
+pattern BaselineValueFormat_ComparisonType_ABSOLUTEDIFFERENCE :: BaselineValueFormat_ComparisonType
+pattern BaselineValueFormat_ComparisonType_ABSOLUTEDIFFERENCE = BaselineValueFormat_ComparisonType "ABSOLUTE_DIFFERENCE"
+
+-- | Use percentage difference between key and baseline value.
+pattern BaselineValueFormat_ComparisonType_PERCENTAGEDIFFERENCE :: BaselineValueFormat_ComparisonType
+pattern BaselineValueFormat_ComparisonType_PERCENTAGEDIFFERENCE = BaselineValueFormat_ComparisonType "PERCENTAGE_DIFFERENCE"
+
+{-# COMPLETE
+  BaselineValueFormat_ComparisonType_COMPARISONTYPEUNDEFINED,
+  BaselineValueFormat_ComparisonType_ABSOLUTEDIFFERENCE,
+  BaselineValueFormat_ComparisonType_PERCENTAGEDIFFERENCE,
+  BaselineValueFormat_ComparisonType
+  #-}
+
+-- | The position of this axis.
+newtype BasicChartAxis_Position = BasicChartAxis_Position {fromBasicChartAxis_Position :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern BasicChartAxis_Position_BASICCHARTAXISPOSITIONUNSPECIFIED :: BasicChartAxis_Position
+pattern BasicChartAxis_Position_BASICCHARTAXISPOSITIONUNSPECIFIED = BasicChartAxis_Position "BASIC_CHART_AXIS_POSITION_UNSPECIFIED"
+
+-- | 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.
+pattern BasicChartAxis_Position_BOTTOMAXIS :: BasicChartAxis_Position
+pattern BasicChartAxis_Position_BOTTOMAXIS = BasicChartAxis_Position "BOTTOM_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.
+pattern BasicChartAxis_Position_LEFTAXIS :: BasicChartAxis_Position
+pattern BasicChartAxis_Position_LEFTAXIS = BasicChartAxis_Position "LEFT_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.
+pattern BasicChartAxis_Position_RIGHTAXIS :: BasicChartAxis_Position
+pattern BasicChartAxis_Position_RIGHTAXIS = BasicChartAxis_Position "RIGHT_AXIS"
+
+{-# COMPLETE
+  BasicChartAxis_Position_BASICCHARTAXISPOSITIONUNSPECIFIED,
+  BasicChartAxis_Position_BOTTOMAXIS,
+  BasicChartAxis_Position_LEFTAXIS,
+  BasicChartAxis_Position_RIGHTAXIS,
+  BasicChartAxis_Position
+  #-}
+
+-- | 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.
+newtype BasicChartSeries_TargetAxis = BasicChartSeries_TargetAxis {fromBasicChartSeries_TargetAxis :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern BasicChartSeries_TargetAxis_BASICCHARTAXISPOSITIONUNSPECIFIED :: BasicChartSeries_TargetAxis
+pattern BasicChartSeries_TargetAxis_BASICCHARTAXISPOSITIONUNSPECIFIED = BasicChartSeries_TargetAxis "BASIC_CHART_AXIS_POSITION_UNSPECIFIED"
+
+-- | 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.
+pattern BasicChartSeries_TargetAxis_BOTTOMAXIS :: BasicChartSeries_TargetAxis
+pattern BasicChartSeries_TargetAxis_BOTTOMAXIS = BasicChartSeries_TargetAxis "BOTTOM_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.
+pattern BasicChartSeries_TargetAxis_LEFTAXIS :: BasicChartSeries_TargetAxis
+pattern BasicChartSeries_TargetAxis_LEFTAXIS = BasicChartSeries_TargetAxis "LEFT_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.
+pattern BasicChartSeries_TargetAxis_RIGHTAXIS :: BasicChartSeries_TargetAxis
+pattern BasicChartSeries_TargetAxis_RIGHTAXIS = BasicChartSeries_TargetAxis "RIGHT_AXIS"
+
+{-# COMPLETE
+  BasicChartSeries_TargetAxis_BASICCHARTAXISPOSITIONUNSPECIFIED,
+  BasicChartSeries_TargetAxis_BOTTOMAXIS,
+  BasicChartSeries_TargetAxis_LEFTAXIS,
+  BasicChartSeries_TargetAxis_RIGHTAXIS,
+  BasicChartSeries_TargetAxis
+  #-}
+
+-- | 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.
+newtype BasicChartSeries_Type = BasicChartSeries_Type {fromBasicChartSeries_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern BasicChartSeries_Type_BASICCHARTTYPEUNSPECIFIED :: BasicChartSeries_Type
+pattern BasicChartSeries_Type_BASICCHARTTYPEUNSPECIFIED = BasicChartSeries_Type "BASIC_CHART_TYPE_UNSPECIFIED"
+
+-- | A bar chart.
+pattern BasicChartSeries_Type_Bar :: BasicChartSeries_Type
+pattern BasicChartSeries_Type_Bar = BasicChartSeries_Type "BAR"
+
+-- | A line chart.
+pattern BasicChartSeries_Type_Line :: BasicChartSeries_Type
+pattern BasicChartSeries_Type_Line = BasicChartSeries_Type "LINE"
+
+-- | An area chart.
+pattern BasicChartSeries_Type_Area :: BasicChartSeries_Type
+pattern BasicChartSeries_Type_Area = BasicChartSeries_Type "AREA"
+
+-- | A column chart.
+pattern BasicChartSeries_Type_Column :: BasicChartSeries_Type
+pattern BasicChartSeries_Type_Column = BasicChartSeries_Type "COLUMN"
+
+-- | A scatter chart.
+pattern BasicChartSeries_Type_Scatter :: BasicChartSeries_Type
+pattern BasicChartSeries_Type_Scatter = BasicChartSeries_Type "SCATTER"
+
+-- | A combo chart.
+pattern BasicChartSeries_Type_Combo :: BasicChartSeries_Type
+pattern BasicChartSeries_Type_Combo = BasicChartSeries_Type "COMBO"
+
+-- | A stepped area chart.
+pattern BasicChartSeries_Type_STEPPEDAREA :: BasicChartSeries_Type
+pattern BasicChartSeries_Type_STEPPEDAREA = BasicChartSeries_Type "STEPPED_AREA"
+
+{-# COMPLETE
+  BasicChartSeries_Type_BASICCHARTTYPEUNSPECIFIED,
+  BasicChartSeries_Type_Bar,
+  BasicChartSeries_Type_Line,
+  BasicChartSeries_Type_Area,
+  BasicChartSeries_Type_Column,
+  BasicChartSeries_Type_Scatter,
+  BasicChartSeries_Type_Combo,
+  BasicChartSeries_Type_STEPPEDAREA,
+  BasicChartSeries_Type
+  #-}
+
+-- | The type of the chart.
+newtype BasicChartSpec_ChartType = BasicChartSpec_ChartType {fromBasicChartSpec_ChartType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern BasicChartSpec_ChartType_BASICCHARTTYPEUNSPECIFIED :: BasicChartSpec_ChartType
+pattern BasicChartSpec_ChartType_BASICCHARTTYPEUNSPECIFIED = BasicChartSpec_ChartType "BASIC_CHART_TYPE_UNSPECIFIED"
+
+-- | A bar chart.
+pattern BasicChartSpec_ChartType_Bar :: BasicChartSpec_ChartType
+pattern BasicChartSpec_ChartType_Bar = BasicChartSpec_ChartType "BAR"
+
+-- | A line chart.
+pattern BasicChartSpec_ChartType_Line :: BasicChartSpec_ChartType
+pattern BasicChartSpec_ChartType_Line = BasicChartSpec_ChartType "LINE"
+
+-- | An area chart.
+pattern BasicChartSpec_ChartType_Area :: BasicChartSpec_ChartType
+pattern BasicChartSpec_ChartType_Area = BasicChartSpec_ChartType "AREA"
+
+-- | A column chart.
+pattern BasicChartSpec_ChartType_Column :: BasicChartSpec_ChartType
+pattern BasicChartSpec_ChartType_Column = BasicChartSpec_ChartType "COLUMN"
+
+-- | A scatter chart.
+pattern BasicChartSpec_ChartType_Scatter :: BasicChartSpec_ChartType
+pattern BasicChartSpec_ChartType_Scatter = BasicChartSpec_ChartType "SCATTER"
+
+-- | A combo chart.
+pattern BasicChartSpec_ChartType_Combo :: BasicChartSpec_ChartType
+pattern BasicChartSpec_ChartType_Combo = BasicChartSpec_ChartType "COMBO"
+
+-- | A stepped area chart.
+pattern BasicChartSpec_ChartType_STEPPEDAREA :: BasicChartSpec_ChartType
+pattern BasicChartSpec_ChartType_STEPPEDAREA = BasicChartSpec_ChartType "STEPPED_AREA"
+
+{-# COMPLETE
+  BasicChartSpec_ChartType_BASICCHARTTYPEUNSPECIFIED,
+  BasicChartSpec_ChartType_Bar,
+  BasicChartSpec_ChartType_Line,
+  BasicChartSpec_ChartType_Area,
+  BasicChartSpec_ChartType_Column,
+  BasicChartSpec_ChartType_Scatter,
+  BasicChartSpec_ChartType_Combo,
+  BasicChartSpec_ChartType_STEPPEDAREA,
+  BasicChartSpec_ChartType
+  #-}
+
+-- | The behavior of tooltips and data highlighting when hovering on data and chart area.
+newtype BasicChartSpec_CompareMode = BasicChartSpec_CompareMode {fromBasicChartSpec_CompareMode :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern BasicChartSpec_CompareMode_BASICCHARTCOMPAREMODEUNSPECIFIED :: BasicChartSpec_CompareMode
+pattern BasicChartSpec_CompareMode_BASICCHARTCOMPAREMODEUNSPECIFIED = BasicChartSpec_CompareMode "BASIC_CHART_COMPARE_MODE_UNSPECIFIED"
+
+-- | Only the focused data element is highlighted and shown in the tooltip.
+pattern BasicChartSpec_CompareMode_Datum :: BasicChartSpec_CompareMode
+pattern BasicChartSpec_CompareMode_Datum = BasicChartSpec_CompareMode "DATUM"
+
+-- | All data elements with the same category (e.g., domain value) are highlighted and shown in the tooltip.
+pattern BasicChartSpec_CompareMode_Category :: BasicChartSpec_CompareMode
+pattern BasicChartSpec_CompareMode_Category = BasicChartSpec_CompareMode "CATEGORY"
+
+{-# COMPLETE
+  BasicChartSpec_CompareMode_BASICCHARTCOMPAREMODEUNSPECIFIED,
+  BasicChartSpec_CompareMode_Datum,
+  BasicChartSpec_CompareMode_Category,
+  BasicChartSpec_CompareMode
+  #-}
+
+-- | The position of the chart legend.
+newtype BasicChartSpec_LegendPosition = BasicChartSpec_LegendPosition {fromBasicChartSpec_LegendPosition :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern BasicChartSpec_LegendPosition_BASICCHARTLEGENDPOSITIONUNSPECIFIED :: BasicChartSpec_LegendPosition
+pattern BasicChartSpec_LegendPosition_BASICCHARTLEGENDPOSITIONUNSPECIFIED = BasicChartSpec_LegendPosition "BASIC_CHART_LEGEND_POSITION_UNSPECIFIED"
+
+-- | The legend is rendered on the bottom of the chart.
+pattern BasicChartSpec_LegendPosition_BOTTOMLEGEND :: BasicChartSpec_LegendPosition
+pattern BasicChartSpec_LegendPosition_BOTTOMLEGEND = BasicChartSpec_LegendPosition "BOTTOM_LEGEND"
+
+-- | The legend is rendered on the left of the chart.
+pattern BasicChartSpec_LegendPosition_LEFTLEGEND :: BasicChartSpec_LegendPosition
+pattern BasicChartSpec_LegendPosition_LEFTLEGEND = BasicChartSpec_LegendPosition "LEFT_LEGEND"
+
+-- | The legend is rendered on the right of the chart.
+pattern BasicChartSpec_LegendPosition_RIGHTLEGEND :: BasicChartSpec_LegendPosition
+pattern BasicChartSpec_LegendPosition_RIGHTLEGEND = BasicChartSpec_LegendPosition "RIGHT_LEGEND"
+
+-- | The legend is rendered on the top of the chart.
+pattern BasicChartSpec_LegendPosition_TOPLEGEND :: BasicChartSpec_LegendPosition
+pattern BasicChartSpec_LegendPosition_TOPLEGEND = BasicChartSpec_LegendPosition "TOP_LEGEND"
+
+-- | No legend is rendered.
+pattern BasicChartSpec_LegendPosition_NOLEGEND :: BasicChartSpec_LegendPosition
+pattern BasicChartSpec_LegendPosition_NOLEGEND = BasicChartSpec_LegendPosition "NO_LEGEND"
+
+{-# COMPLETE
+  BasicChartSpec_LegendPosition_BASICCHARTLEGENDPOSITIONUNSPECIFIED,
+  BasicChartSpec_LegendPosition_BOTTOMLEGEND,
+  BasicChartSpec_LegendPosition_LEFTLEGEND,
+  BasicChartSpec_LegendPosition_RIGHTLEGEND,
+  BasicChartSpec_LegendPosition_TOPLEGEND,
+  BasicChartSpec_LegendPosition_NOLEGEND,
+  BasicChartSpec_LegendPosition
+  #-}
+
+-- | The stacked type for charts that support vertical stacking. Applies to Area, Bar, Column, Combo, and Stepped Area charts.
+newtype BasicChartSpec_StackedType = BasicChartSpec_StackedType {fromBasicChartSpec_StackedType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern BasicChartSpec_StackedType_BASICCHARTSTACKEDTYPEUNSPECIFIED :: BasicChartSpec_StackedType
+pattern BasicChartSpec_StackedType_BASICCHARTSTACKEDTYPEUNSPECIFIED = BasicChartSpec_StackedType "BASIC_CHART_STACKED_TYPE_UNSPECIFIED"
+
+-- | Series are not stacked.
+pattern BasicChartSpec_StackedType_NOTSTACKED :: BasicChartSpec_StackedType
+pattern BasicChartSpec_StackedType_NOTSTACKED = BasicChartSpec_StackedType "NOT_STACKED"
+
+-- | Series values are stacked, each value is rendered vertically beginning from the top of the value below it.
+pattern BasicChartSpec_StackedType_Stacked :: BasicChartSpec_StackedType
+pattern BasicChartSpec_StackedType_Stacked = BasicChartSpec_StackedType "STACKED"
+
+-- | Vertical stacks are stretched to reach the top of the chart, with values laid out as percentages of each other.
+pattern BasicChartSpec_StackedType_PERCENTSTACKED :: BasicChartSpec_StackedType
+pattern BasicChartSpec_StackedType_PERCENTSTACKED = BasicChartSpec_StackedType "PERCENT_STACKED"
+
+{-# COMPLETE
+  BasicChartSpec_StackedType_BASICCHARTSTACKEDTYPEUNSPECIFIED,
+  BasicChartSpec_StackedType_NOTSTACKED,
+  BasicChartSpec_StackedType_Stacked,
+  BasicChartSpec_StackedType_PERCENTSTACKED,
+  BasicChartSpec_StackedType
+  #-}
+
+-- | 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 SERIAL/NUMBER.
+newtype BatchGetValuesByDataFilterRequest_DateTimeRenderOption = BatchGetValuesByDataFilterRequest_DateTimeRenderOption {fromBatchGetValuesByDataFilterRequest_DateTimeRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | 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 30th 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.
+pattern BatchGetValuesByDataFilterRequest_DateTimeRenderOption_SERIALNUMBER :: BatchGetValuesByDataFilterRequest_DateTimeRenderOption
+pattern BatchGetValuesByDataFilterRequest_DateTimeRenderOption_SERIALNUMBER = BatchGetValuesByDataFilterRequest_DateTimeRenderOption "SERIAL_NUMBER"
+
+-- | Instructs date, time, datetime, and duration fields to be output as strings in their given number format (which depends on the spreadsheet locale).
+pattern BatchGetValuesByDataFilterRequest_DateTimeRenderOption_FORMATTEDSTRING :: BatchGetValuesByDataFilterRequest_DateTimeRenderOption
+pattern BatchGetValuesByDataFilterRequest_DateTimeRenderOption_FORMATTEDSTRING = BatchGetValuesByDataFilterRequest_DateTimeRenderOption "FORMATTED_STRING"
+
+{-# COMPLETE
+  BatchGetValuesByDataFilterRequest_DateTimeRenderOption_SERIALNUMBER,
+  BatchGetValuesByDataFilterRequest_DateTimeRenderOption_FORMATTEDSTRING,
+  BatchGetValuesByDataFilterRequest_DateTimeRenderOption
+  #-}
+
+-- | 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@ returns @[[1,2],[3,4]]@, whereas a request that sets @majorDimension=COLUMNS@ returns @[[1,3],[2,4]]@.
+newtype BatchGetValuesByDataFilterRequest_MajorDimension = BatchGetValuesByDataFilterRequest_MajorDimension {fromBatchGetValuesByDataFilterRequest_MajorDimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern BatchGetValuesByDataFilterRequest_MajorDimension_DIMENSIONUNSPECIFIED :: BatchGetValuesByDataFilterRequest_MajorDimension
+pattern BatchGetValuesByDataFilterRequest_MajorDimension_DIMENSIONUNSPECIFIED = BatchGetValuesByDataFilterRequest_MajorDimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern BatchGetValuesByDataFilterRequest_MajorDimension_Rows :: BatchGetValuesByDataFilterRequest_MajorDimension
+pattern BatchGetValuesByDataFilterRequest_MajorDimension_Rows = BatchGetValuesByDataFilterRequest_MajorDimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern BatchGetValuesByDataFilterRequest_MajorDimension_Columns :: BatchGetValuesByDataFilterRequest_MajorDimension
+pattern BatchGetValuesByDataFilterRequest_MajorDimension_Columns = BatchGetValuesByDataFilterRequest_MajorDimension "COLUMNS"
+
+{-# COMPLETE
+  BatchGetValuesByDataFilterRequest_MajorDimension_DIMENSIONUNSPECIFIED,
+  BatchGetValuesByDataFilterRequest_MajorDimension_Rows,
+  BatchGetValuesByDataFilterRequest_MajorDimension_Columns,
+  BatchGetValuesByDataFilterRequest_MajorDimension
+  #-}
+
+-- | How values should be represented in the output. The default render option is FORMATTED_VALUE.
+newtype BatchGetValuesByDataFilterRequest_ValueRenderOption = BatchGetValuesByDataFilterRequest_ValueRenderOption {fromBatchGetValuesByDataFilterRequest_ValueRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Values will be calculated & formatted in the response 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\"@.
+pattern BatchGetValuesByDataFilterRequest_ValueRenderOption_FORMATTEDVALUE :: BatchGetValuesByDataFilterRequest_ValueRenderOption
+pattern BatchGetValuesByDataFilterRequest_ValueRenderOption_FORMATTEDVALUE = BatchGetValuesByDataFilterRequest_ValueRenderOption "FORMATTED_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@.
+pattern BatchGetValuesByDataFilterRequest_ValueRenderOption_UNFORMATTEDVALUE :: BatchGetValuesByDataFilterRequest_ValueRenderOption
+pattern BatchGetValuesByDataFilterRequest_ValueRenderOption_UNFORMATTEDVALUE = BatchGetValuesByDataFilterRequest_ValueRenderOption "UNFORMATTED_VALUE"
+
+-- | 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\"@. Sheets treats date and time values as decimal values. This lets you perform arithmetic on them in formulas. For more information on interpreting date and time values, see <https://developers.google.com/sheets/api/guides/formats#about_date_time_values About date & time values>.
+pattern BatchGetValuesByDataFilterRequest_ValueRenderOption_Formula :: BatchGetValuesByDataFilterRequest_ValueRenderOption
+pattern BatchGetValuesByDataFilterRequest_ValueRenderOption_Formula = BatchGetValuesByDataFilterRequest_ValueRenderOption "FORMULA"
+
+{-# COMPLETE
+  BatchGetValuesByDataFilterRequest_ValueRenderOption_FORMATTEDVALUE,
+  BatchGetValuesByDataFilterRequest_ValueRenderOption_UNFORMATTEDVALUE,
+  BatchGetValuesByDataFilterRequest_ValueRenderOption_Formula,
+  BatchGetValuesByDataFilterRequest_ValueRenderOption
+  #-}
+
+-- | 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 SERIAL_NUMBER.
+newtype BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption = BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption {fromBatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | 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 30th 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.
+pattern BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption_SERIALNUMBER :: BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption
+pattern BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption_SERIALNUMBER = BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption "SERIAL_NUMBER"
+
+-- | Instructs date, time, datetime, and duration fields to be output as strings in their given number format (which depends on the spreadsheet locale).
+pattern BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption_FORMATTEDSTRING :: BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption
+pattern BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption_FORMATTEDSTRING = BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption "FORMATTED_STRING"
+
+{-# COMPLETE
+  BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption_SERIALNUMBER,
+  BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption_FORMATTEDSTRING,
+  BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption
+  #-}
+
+-- | Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
+newtype BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption = BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption {fromBatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Values will be calculated & formatted in the response 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\"@.
+pattern BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_FORMATTEDVALUE :: BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption
+pattern BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_FORMATTEDVALUE = BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption "FORMATTED_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@.
+pattern BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_UNFORMATTEDVALUE :: BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption
+pattern BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_UNFORMATTEDVALUE = BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption "UNFORMATTED_VALUE"
+
+-- | 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\"@. Sheets treats date and time values as decimal values. This lets you perform arithmetic on them in formulas. For more information on interpreting date and time values, see <https://developers.google.com/sheets/api/guides/formats#about_date_time_values About date & time values>.
+pattern BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_Formula :: BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption
+pattern BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_Formula = BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption "FORMULA"
+
+{-# COMPLETE
+  BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_FORMATTEDVALUE,
+  BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_UNFORMATTEDVALUE,
+  BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption_Formula,
+  BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption
+  #-}
+
+-- | How the input data should be interpreted.
+newtype BatchUpdateValuesByDataFilterRequest_ValueInputOption = BatchUpdateValuesByDataFilterRequest_ValueInputOption {fromBatchUpdateValuesByDataFilterRequest_ValueInputOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default input value. This value must not be used.
+pattern BatchUpdateValuesByDataFilterRequest_ValueInputOption_INPUTVALUEOPTIONUNSPECIFIED :: BatchUpdateValuesByDataFilterRequest_ValueInputOption
+pattern BatchUpdateValuesByDataFilterRequest_ValueInputOption_INPUTVALUEOPTIONUNSPECIFIED = BatchUpdateValuesByDataFilterRequest_ValueInputOption "INPUT_VALUE_OPTION_UNSPECIFIED"
+
+-- | The values the user has entered will not be parsed and will be stored as-is.
+pattern BatchUpdateValuesByDataFilterRequest_ValueInputOption_Raw :: BatchUpdateValuesByDataFilterRequest_ValueInputOption
+pattern BatchUpdateValuesByDataFilterRequest_ValueInputOption_Raw = BatchUpdateValuesByDataFilterRequest_ValueInputOption "RAW"
+
+-- | 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.
+pattern BatchUpdateValuesByDataFilterRequest_ValueInputOption_USERENTERED :: BatchUpdateValuesByDataFilterRequest_ValueInputOption
+pattern BatchUpdateValuesByDataFilterRequest_ValueInputOption_USERENTERED = BatchUpdateValuesByDataFilterRequest_ValueInputOption "USER_ENTERED"
+
+{-# COMPLETE
+  BatchUpdateValuesByDataFilterRequest_ValueInputOption_INPUTVALUEOPTIONUNSPECIFIED,
+  BatchUpdateValuesByDataFilterRequest_ValueInputOption_Raw,
+  BatchUpdateValuesByDataFilterRequest_ValueInputOption_USERENTERED,
+  BatchUpdateValuesByDataFilterRequest_ValueInputOption
+  #-}
+
+-- | 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 SERIAL_NUMBER.
+newtype BatchUpdateValuesRequest_ResponseDateTimeRenderOption = BatchUpdateValuesRequest_ResponseDateTimeRenderOption {fromBatchUpdateValuesRequest_ResponseDateTimeRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | 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 30th 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.
+pattern BatchUpdateValuesRequest_ResponseDateTimeRenderOption_SERIALNUMBER :: BatchUpdateValuesRequest_ResponseDateTimeRenderOption
+pattern BatchUpdateValuesRequest_ResponseDateTimeRenderOption_SERIALNUMBER = BatchUpdateValuesRequest_ResponseDateTimeRenderOption "SERIAL_NUMBER"
+
+-- | Instructs date, time, datetime, and duration fields to be output as strings in their given number format (which depends on the spreadsheet locale).
+pattern BatchUpdateValuesRequest_ResponseDateTimeRenderOption_FORMATTEDSTRING :: BatchUpdateValuesRequest_ResponseDateTimeRenderOption
+pattern BatchUpdateValuesRequest_ResponseDateTimeRenderOption_FORMATTEDSTRING = BatchUpdateValuesRequest_ResponseDateTimeRenderOption "FORMATTED_STRING"
+
+{-# COMPLETE
+  BatchUpdateValuesRequest_ResponseDateTimeRenderOption_SERIALNUMBER,
+  BatchUpdateValuesRequest_ResponseDateTimeRenderOption_FORMATTEDSTRING,
+  BatchUpdateValuesRequest_ResponseDateTimeRenderOption
+  #-}
+
+-- | Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
+newtype BatchUpdateValuesRequest_ResponseValueRenderOption = BatchUpdateValuesRequest_ResponseValueRenderOption {fromBatchUpdateValuesRequest_ResponseValueRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Values will be calculated & formatted in the response 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\"@.
+pattern BatchUpdateValuesRequest_ResponseValueRenderOption_FORMATTEDVALUE :: BatchUpdateValuesRequest_ResponseValueRenderOption
+pattern BatchUpdateValuesRequest_ResponseValueRenderOption_FORMATTEDVALUE = BatchUpdateValuesRequest_ResponseValueRenderOption "FORMATTED_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@.
+pattern BatchUpdateValuesRequest_ResponseValueRenderOption_UNFORMATTEDVALUE :: BatchUpdateValuesRequest_ResponseValueRenderOption
+pattern BatchUpdateValuesRequest_ResponseValueRenderOption_UNFORMATTEDVALUE = BatchUpdateValuesRequest_ResponseValueRenderOption "UNFORMATTED_VALUE"
+
+-- | 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\"@. Sheets treats date and time values as decimal values. This lets you perform arithmetic on them in formulas. For more information on interpreting date and time values, see <https://developers.google.com/sheets/api/guides/formats#about_date_time_values About date & time values>.
+pattern BatchUpdateValuesRequest_ResponseValueRenderOption_Formula :: BatchUpdateValuesRequest_ResponseValueRenderOption
+pattern BatchUpdateValuesRequest_ResponseValueRenderOption_Formula = BatchUpdateValuesRequest_ResponseValueRenderOption "FORMULA"
+
+{-# COMPLETE
+  BatchUpdateValuesRequest_ResponseValueRenderOption_FORMATTEDVALUE,
+  BatchUpdateValuesRequest_ResponseValueRenderOption_UNFORMATTEDVALUE,
+  BatchUpdateValuesRequest_ResponseValueRenderOption_Formula,
+  BatchUpdateValuesRequest_ResponseValueRenderOption
+  #-}
+
+-- | How the input data should be interpreted.
+newtype BatchUpdateValuesRequest_ValueInputOption = BatchUpdateValuesRequest_ValueInputOption {fromBatchUpdateValuesRequest_ValueInputOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default input value. This value must not be used.
+pattern BatchUpdateValuesRequest_ValueInputOption_INPUTVALUEOPTIONUNSPECIFIED :: BatchUpdateValuesRequest_ValueInputOption
+pattern BatchUpdateValuesRequest_ValueInputOption_INPUTVALUEOPTIONUNSPECIFIED = BatchUpdateValuesRequest_ValueInputOption "INPUT_VALUE_OPTION_UNSPECIFIED"
+
+-- | The values the user has entered will not be parsed and will be stored as-is.
+pattern BatchUpdateValuesRequest_ValueInputOption_Raw :: BatchUpdateValuesRequest_ValueInputOption
+pattern BatchUpdateValuesRequest_ValueInputOption_Raw = BatchUpdateValuesRequest_ValueInputOption "RAW"
+
+-- | 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.
+pattern BatchUpdateValuesRequest_ValueInputOption_USERENTERED :: BatchUpdateValuesRequest_ValueInputOption
+pattern BatchUpdateValuesRequest_ValueInputOption_USERENTERED = BatchUpdateValuesRequest_ValueInputOption "USER_ENTERED"
+
+{-# COMPLETE
+  BatchUpdateValuesRequest_ValueInputOption_INPUTVALUEOPTIONUNSPECIFIED,
+  BatchUpdateValuesRequest_ValueInputOption_Raw,
+  BatchUpdateValuesRequest_ValueInputOption_USERENTERED,
+  BatchUpdateValuesRequest_ValueInputOption
+  #-}
+
+-- | The type of condition.
+newtype BooleanCondition_Type = BooleanCondition_Type {fromBooleanCondition_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern BooleanCondition_Type_CONDITIONTYPEUNSPECIFIED :: BooleanCondition_Type
+pattern BooleanCondition_Type_CONDITIONTYPEUNSPECIFIED = BooleanCondition_Type "CONDITION_TYPE_UNSPECIFIED"
+
+-- | The cell\'s value must be greater than the condition\'s value. Supported by data validation, conditional formatting and filters. Requires a single ConditionValue.
+pattern BooleanCondition_Type_NUMBERGREATER :: BooleanCondition_Type
+pattern BooleanCondition_Type_NUMBERGREATER = BooleanCondition_Type "NUMBER_GREATER"
+
+-- | 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.
+pattern BooleanCondition_Type_NUMBERGREATERTHANEQ :: BooleanCondition_Type
+pattern BooleanCondition_Type_NUMBERGREATERTHANEQ = BooleanCondition_Type "NUMBER_GREATER_THAN_EQ"
+
+-- | The cell\'s value must be less than the condition\'s value. Supported by data validation, conditional formatting and filters. Requires a single ConditionValue.
+pattern BooleanCondition_Type_NUMBERLESS :: BooleanCondition_Type
+pattern BooleanCondition_Type_NUMBERLESS = BooleanCondition_Type "NUMBER_LESS"
+
+-- | 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.
+pattern BooleanCondition_Type_NUMBERLESSTHANEQ :: BooleanCondition_Type
+pattern BooleanCondition_Type_NUMBERLESSTHANEQ = BooleanCondition_Type "NUMBER_LESS_THAN_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 for data validation, conditional formatting, and filters on non-data source objects and at least one ConditionValue for filters on data source objects.
+pattern BooleanCondition_Type_NUMBEREQ :: BooleanCondition_Type
+pattern BooleanCondition_Type_NUMBEREQ = BooleanCondition_Type "NUMBER_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 for data validation, conditional formatting, and filters on non-data source objects and at least one ConditionValue for filters on data source objects.
+pattern BooleanCondition_Type_NUMBERNOTEQ :: BooleanCondition_Type
+pattern BooleanCondition_Type_NUMBERNOTEQ = BooleanCondition_Type "NUMBER_NOT_EQ"
+
+-- | The cell\'s value must be between the two condition values. Supported by data validation, conditional formatting and filters. Requires exactly two ConditionValues.
+pattern BooleanCondition_Type_NUMBERBETWEEN :: BooleanCondition_Type
+pattern BooleanCondition_Type_NUMBERBETWEEN = BooleanCondition_Type "NUMBER_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.
+pattern BooleanCondition_Type_NUMBERNOTBETWEEN :: BooleanCondition_Type
+pattern BooleanCondition_Type_NUMBERNOTBETWEEN = BooleanCondition_Type "NUMBER_NOT_BETWEEN"
+
+-- | The cell\'s value must contain the condition\'s value. Supported by data validation, conditional formatting and filters. Requires a single ConditionValue.
+pattern BooleanCondition_Type_TEXTCONTAINS :: BooleanCondition_Type
+pattern BooleanCondition_Type_TEXTCONTAINS = BooleanCondition_Type "TEXT_CONTAINS"
+
+-- | The cell\'s value must not contain the condition\'s value. Supported by data validation, conditional formatting and filters. Requires a single ConditionValue.
+pattern BooleanCondition_Type_TEXTNOTCONTAINS :: BooleanCondition_Type
+pattern BooleanCondition_Type_TEXTNOTCONTAINS = BooleanCondition_Type "TEXT_NOT_CONTAINS"
+
+-- | The cell\'s value must start with the condition\'s value. Supported by conditional formatting and filters. Requires a single ConditionValue.
+pattern BooleanCondition_Type_TEXTSTARTSWITH :: BooleanCondition_Type
+pattern BooleanCondition_Type_TEXTSTARTSWITH = BooleanCondition_Type "TEXT_STARTS_WITH"
+
+-- | The cell\'s value must end with the condition\'s value. Supported by conditional formatting and filters. Requires a single ConditionValue.
+pattern BooleanCondition_Type_TEXTENDSWITH :: BooleanCondition_Type
+pattern BooleanCondition_Type_TEXTENDSWITH = BooleanCondition_Type "TEXT_ENDS_WITH"
+
+-- | The cell\'s value must be exactly the condition\'s value. Supported by data validation, conditional formatting and filters. Requires a single ConditionValue for data validation, conditional formatting, and filters on non-data source objects and at least one ConditionValue for filters on data source objects.
+pattern BooleanCondition_Type_TEXTEQ :: BooleanCondition_Type
+pattern BooleanCondition_Type_TEXTEQ = BooleanCondition_Type "TEXT_EQ"
+
+-- | The cell\'s value must be a valid email address. Supported by data validation. Requires no ConditionValues.
+pattern BooleanCondition_Type_TEXTISEMAIL :: BooleanCondition_Type
+pattern BooleanCondition_Type_TEXTISEMAIL = BooleanCondition_Type "TEXT_IS_EMAIL"
+
+-- | The cell\'s value must be a valid URL. Supported by data validation. Requires no ConditionValues.
+pattern BooleanCondition_Type_TEXTISURL :: BooleanCondition_Type
+pattern BooleanCondition_Type_TEXTISURL = BooleanCondition_Type "TEXT_IS_URL"
+
+-- | 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 for data validation, conditional formatting, and filters on non-data source objects and at least one ConditionValue for filters on data source objects.
+pattern BooleanCondition_Type_DATEEQ :: BooleanCondition_Type
+pattern BooleanCondition_Type_DATEEQ = BooleanCondition_Type "DATE_EQ"
+
+-- | 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.
+pattern BooleanCondition_Type_DATEBEFORE :: BooleanCondition_Type
+pattern BooleanCondition_Type_DATEBEFORE = BooleanCondition_Type "DATE_BEFORE"
+
+-- | 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.
+pattern BooleanCondition_Type_DATEAFTER :: BooleanCondition_Type
+pattern BooleanCondition_Type_DATEAFTER = BooleanCondition_Type "DATE_AFTER"
+
+-- | 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.
+pattern BooleanCondition_Type_DATEONORBEFORE :: BooleanCondition_Type
+pattern BooleanCondition_Type_DATEONORBEFORE = BooleanCondition_Type "DATE_ON_OR_BEFORE"
+
+-- | 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.
+pattern BooleanCondition_Type_DATEONORAFTER :: BooleanCondition_Type
+pattern BooleanCondition_Type_DATEONORAFTER = BooleanCondition_Type "DATE_ON_OR_AFTER"
+
+-- | The cell\'s value must be between the dates of the two condition values. Supported by data validation. Requires exactly two ConditionValues.
+pattern BooleanCondition_Type_DATEBETWEEN :: BooleanCondition_Type
+pattern BooleanCondition_Type_DATEBETWEEN = BooleanCondition_Type "DATE_BETWEEN"
+
+-- | The cell\'s value must be outside the dates of the two condition values. Supported by data validation. Requires exactly two ConditionValues.
+pattern BooleanCondition_Type_DATENOTBETWEEN :: BooleanCondition_Type
+pattern BooleanCondition_Type_DATENOTBETWEEN = BooleanCondition_Type "DATE_NOT_BETWEEN"
+
+-- | The cell\'s value must be a date. Supported by data validation. Requires no ConditionValues.
+pattern BooleanCondition_Type_DATEISVALID :: BooleanCondition_Type
+pattern BooleanCondition_Type_DATEISVALID = BooleanCondition_Type "DATE_IS_VALID"
+
+-- | 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.
+pattern BooleanCondition_Type_ONEOFRANGE :: BooleanCondition_Type
+pattern BooleanCondition_Type_ONEOFRANGE = BooleanCondition_Type "ONE_OF_RANGE"
+
+-- | 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.
+pattern BooleanCondition_Type_ONEOFLIST :: BooleanCondition_Type
+pattern BooleanCondition_Type_ONEOFLIST = BooleanCondition_Type "ONE_OF_LIST"
+
+-- | The cell\'s value must be empty. Supported by conditional formatting and filters. Requires no ConditionValues.
+pattern BooleanCondition_Type_Blank :: BooleanCondition_Type
+pattern BooleanCondition_Type_Blank = BooleanCondition_Type "BLANK"
+
+-- | The cell\'s value must not be empty. Supported by conditional formatting and filters. Requires no ConditionValues.
+pattern BooleanCondition_Type_NOTBLANK :: BooleanCondition_Type
+pattern BooleanCondition_Type_NOTBLANK = BooleanCondition_Type "NOT_BLANK"
+
+-- | The condition\'s formula must evaluate to true. Supported by data validation, conditional formatting and filters. Not supported by data source sheet filters. Requires a single ConditionValue.
+pattern BooleanCondition_Type_CUSTOMFORMULA :: BooleanCondition_Type
+pattern BooleanCondition_Type_CUSTOMFORMULA = BooleanCondition_Type "CUSTOM_FORMULA"
+
+-- | 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\".
+pattern BooleanCondition_Type_Boolean :: BooleanCondition_Type
+pattern BooleanCondition_Type_Boolean = BooleanCondition_Type "BOOLEAN"
+
+-- | The cell\'s value must be exactly not the condition\'s value. Supported by filters on data source objects. Requires at least one ConditionValue.
+pattern BooleanCondition_Type_TEXTNOTEQ :: BooleanCondition_Type
+pattern BooleanCondition_Type_TEXTNOTEQ = BooleanCondition_Type "TEXT_NOT_EQ"
+
+-- | The cell\'s value must be exactly not the condition\'s value. Supported by filters on data source objects. Requires at least one ConditionValue.
+pattern BooleanCondition_Type_DATENOTEQ :: BooleanCondition_Type
+pattern BooleanCondition_Type_DATENOTEQ = BooleanCondition_Type "DATE_NOT_EQ"
+
+-- | The cell\'s value must follow the pattern specified. Requires a single ConditionValue.
+pattern BooleanCondition_Type_FILTEREXPRESSION :: BooleanCondition_Type
+pattern BooleanCondition_Type_FILTEREXPRESSION = BooleanCondition_Type "FILTER_EXPRESSION"
+
+{-# COMPLETE
+  BooleanCondition_Type_CONDITIONTYPEUNSPECIFIED,
+  BooleanCondition_Type_NUMBERGREATER,
+  BooleanCondition_Type_NUMBERGREATERTHANEQ,
+  BooleanCondition_Type_NUMBERLESS,
+  BooleanCondition_Type_NUMBERLESSTHANEQ,
+  BooleanCondition_Type_NUMBEREQ,
+  BooleanCondition_Type_NUMBERNOTEQ,
+  BooleanCondition_Type_NUMBERBETWEEN,
+  BooleanCondition_Type_NUMBERNOTBETWEEN,
+  BooleanCondition_Type_TEXTCONTAINS,
+  BooleanCondition_Type_TEXTNOTCONTAINS,
+  BooleanCondition_Type_TEXTSTARTSWITH,
+  BooleanCondition_Type_TEXTENDSWITH,
+  BooleanCondition_Type_TEXTEQ,
+  BooleanCondition_Type_TEXTISEMAIL,
+  BooleanCondition_Type_TEXTISURL,
+  BooleanCondition_Type_DATEEQ,
+  BooleanCondition_Type_DATEBEFORE,
+  BooleanCondition_Type_DATEAFTER,
+  BooleanCondition_Type_DATEONORBEFORE,
+  BooleanCondition_Type_DATEONORAFTER,
+  BooleanCondition_Type_DATEBETWEEN,
+  BooleanCondition_Type_DATENOTBETWEEN,
+  BooleanCondition_Type_DATEISVALID,
+  BooleanCondition_Type_ONEOFRANGE,
+  BooleanCondition_Type_ONEOFLIST,
+  BooleanCondition_Type_Blank,
+  BooleanCondition_Type_NOTBLANK,
+  BooleanCondition_Type_CUSTOMFORMULA,
+  BooleanCondition_Type_Boolean,
+  BooleanCondition_Type_TEXTNOTEQ,
+  BooleanCondition_Type_DATENOTEQ,
+  BooleanCondition_Type_FILTEREXPRESSION,
+  BooleanCondition_Type
+  #-}
+
+-- | The style of the border.
+newtype Border_Style = Border_Style {fromBorder_Style :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The style is not specified. Do not use this.
+pattern Border_Style_STYLEUNSPECIFIED :: Border_Style
+pattern Border_Style_STYLEUNSPECIFIED = Border_Style "STYLE_UNSPECIFIED"
+
+-- | The border is dotted.
+pattern Border_Style_Dotted :: Border_Style
+pattern Border_Style_Dotted = Border_Style "DOTTED"
+
+-- | The border is dashed.
+pattern Border_Style_Dashed :: Border_Style
+pattern Border_Style_Dashed = Border_Style "DASHED"
+
+-- | The border is a thin solid line.
+pattern Border_Style_Solid :: Border_Style
+pattern Border_Style_Solid = Border_Style "SOLID"
+
+-- | The border is a medium solid line.
+pattern Border_Style_SOLIDMEDIUM :: Border_Style
+pattern Border_Style_SOLIDMEDIUM = Border_Style "SOLID_MEDIUM"
+
+-- | The border is a thick solid line.
+pattern Border_Style_SOLIDTHICK :: Border_Style
+pattern Border_Style_SOLIDTHICK = Border_Style "SOLID_THICK"
+
+-- | No border. Used only when updating a border in order to erase it.
+pattern Border_Style_None :: Border_Style
+pattern Border_Style_None = Border_Style "NONE"
+
+-- | The border is two solid lines.
+pattern Border_Style_Double :: Border_Style
+pattern Border_Style_Double = Border_Style "DOUBLE"
+
+{-# COMPLETE
+  Border_Style_STYLEUNSPECIFIED,
+  Border_Style_Dotted,
+  Border_Style_Dashed,
+  Border_Style_Solid,
+  Border_Style_SOLIDMEDIUM,
+  Border_Style_SOLIDTHICK,
+  Border_Style_None,
+  Border_Style_Double,
+  Border_Style
+  #-}
+
+-- | Where the legend of the chart should be drawn.
+newtype BubbleChartSpec_LegendPosition = BubbleChartSpec_LegendPosition {fromBubbleChartSpec_LegendPosition :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern BubbleChartSpec_LegendPosition_BUBBLECHARTLEGENDPOSITIONUNSPECIFIED :: BubbleChartSpec_LegendPosition
+pattern BubbleChartSpec_LegendPosition_BUBBLECHARTLEGENDPOSITIONUNSPECIFIED = BubbleChartSpec_LegendPosition "BUBBLE_CHART_LEGEND_POSITION_UNSPECIFIED"
+
+-- | The legend is rendered on the bottom of the chart.
+pattern BubbleChartSpec_LegendPosition_BOTTOMLEGEND :: BubbleChartSpec_LegendPosition
+pattern BubbleChartSpec_LegendPosition_BOTTOMLEGEND = BubbleChartSpec_LegendPosition "BOTTOM_LEGEND"
+
+-- | The legend is rendered on the left of the chart.
+pattern BubbleChartSpec_LegendPosition_LEFTLEGEND :: BubbleChartSpec_LegendPosition
+pattern BubbleChartSpec_LegendPosition_LEFTLEGEND = BubbleChartSpec_LegendPosition "LEFT_LEGEND"
+
+-- | The legend is rendered on the right of the chart.
+pattern BubbleChartSpec_LegendPosition_RIGHTLEGEND :: BubbleChartSpec_LegendPosition
+pattern BubbleChartSpec_LegendPosition_RIGHTLEGEND = BubbleChartSpec_LegendPosition "RIGHT_LEGEND"
+
+-- | The legend is rendered on the top of the chart.
+pattern BubbleChartSpec_LegendPosition_TOPLEGEND :: BubbleChartSpec_LegendPosition
+pattern BubbleChartSpec_LegendPosition_TOPLEGEND = BubbleChartSpec_LegendPosition "TOP_LEGEND"
+
+-- | No legend is rendered.
+pattern BubbleChartSpec_LegendPosition_NOLEGEND :: BubbleChartSpec_LegendPosition
+pattern BubbleChartSpec_LegendPosition_NOLEGEND = BubbleChartSpec_LegendPosition "NO_LEGEND"
+
+-- | The legend is rendered inside the chart area.
+pattern BubbleChartSpec_LegendPosition_INSIDELEGEND :: BubbleChartSpec_LegendPosition
+pattern BubbleChartSpec_LegendPosition_INSIDELEGEND = BubbleChartSpec_LegendPosition "INSIDE_LEGEND"
+
+{-# COMPLETE
+  BubbleChartSpec_LegendPosition_BUBBLECHARTLEGENDPOSITIONUNSPECIFIED,
+  BubbleChartSpec_LegendPosition_BOTTOMLEGEND,
+  BubbleChartSpec_LegendPosition_LEFTLEGEND,
+  BubbleChartSpec_LegendPosition_RIGHTLEGEND,
+  BubbleChartSpec_LegendPosition_TOPLEGEND,
+  BubbleChartSpec_LegendPosition_NOLEGEND,
+  BubbleChartSpec_LegendPosition_INSIDELEGEND,
+  BubbleChartSpec_LegendPosition
+  #-}
+
+-- | The horizontal alignment of the value in the cell.
+newtype CellFormat_HorizontalAlignment = CellFormat_HorizontalAlignment {fromCellFormat_HorizontalAlignment :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The horizontal alignment is not specified. Do not use this.
+pattern CellFormat_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED :: CellFormat_HorizontalAlignment
+pattern CellFormat_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED = CellFormat_HorizontalAlignment "HORIZONTAL_ALIGN_UNSPECIFIED"
+
+-- | The text is explicitly aligned to the left of the cell.
+pattern CellFormat_HorizontalAlignment_Left' :: CellFormat_HorizontalAlignment
+pattern CellFormat_HorizontalAlignment_Left' = CellFormat_HorizontalAlignment "LEFT"
+
+-- | The text is explicitly aligned to the center of the cell.
+pattern CellFormat_HorizontalAlignment_Center :: CellFormat_HorizontalAlignment
+pattern CellFormat_HorizontalAlignment_Center = CellFormat_HorizontalAlignment "CENTER"
+
+-- | The text is explicitly aligned to the right of the cell.
+pattern CellFormat_HorizontalAlignment_Right' :: CellFormat_HorizontalAlignment
+pattern CellFormat_HorizontalAlignment_Right' = CellFormat_HorizontalAlignment "RIGHT"
+
+{-# COMPLETE
+  CellFormat_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED,
+  CellFormat_HorizontalAlignment_Left',
+  CellFormat_HorizontalAlignment_Center,
+  CellFormat_HorizontalAlignment_Right',
+  CellFormat_HorizontalAlignment
+  #-}
+
+-- | If one exists, how a hyperlink should be displayed in the cell.
+newtype CellFormat_HyperlinkDisplayType = CellFormat_HyperlinkDisplayType {fromCellFormat_HyperlinkDisplayType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value: the hyperlink is rendered. Do not use this.
+pattern CellFormat_HyperlinkDisplayType_HYPERLINKDISPLAYTYPEUNSPECIFIED :: CellFormat_HyperlinkDisplayType
+pattern CellFormat_HyperlinkDisplayType_HYPERLINKDISPLAYTYPEUNSPECIFIED = CellFormat_HyperlinkDisplayType "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED"
+
+-- | A hyperlink should be explicitly rendered.
+pattern CellFormat_HyperlinkDisplayType_Linked :: CellFormat_HyperlinkDisplayType
+pattern CellFormat_HyperlinkDisplayType_Linked = CellFormat_HyperlinkDisplayType "LINKED"
+
+-- | A hyperlink should not be rendered.
+pattern CellFormat_HyperlinkDisplayType_PLAINTEXT :: CellFormat_HyperlinkDisplayType
+pattern CellFormat_HyperlinkDisplayType_PLAINTEXT = CellFormat_HyperlinkDisplayType "PLAIN_TEXT"
+
+{-# COMPLETE
+  CellFormat_HyperlinkDisplayType_HYPERLINKDISPLAYTYPEUNSPECIFIED,
+  CellFormat_HyperlinkDisplayType_Linked,
+  CellFormat_HyperlinkDisplayType_PLAINTEXT,
+  CellFormat_HyperlinkDisplayType
+  #-}
+
+-- | The direction of the text in the cell.
+newtype CellFormat_TextDirection = CellFormat_TextDirection {fromCellFormat_TextDirection :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The text direction is not specified. Do not use this.
+pattern CellFormat_TextDirection_TEXTDIRECTIONUNSPECIFIED :: CellFormat_TextDirection
+pattern CellFormat_TextDirection_TEXTDIRECTIONUNSPECIFIED = CellFormat_TextDirection "TEXT_DIRECTION_UNSPECIFIED"
+
+-- | The text direction of left-to-right was set by the user.
+pattern CellFormat_TextDirection_LEFTTORIGHT :: CellFormat_TextDirection
+pattern CellFormat_TextDirection_LEFTTORIGHT = CellFormat_TextDirection "LEFT_TO_RIGHT"
+
+-- | The text direction of right-to-left was set by the user.
+pattern CellFormat_TextDirection_RIGHTTOLEFT :: CellFormat_TextDirection
+pattern CellFormat_TextDirection_RIGHTTOLEFT = CellFormat_TextDirection "RIGHT_TO_LEFT"
+
+{-# COMPLETE
+  CellFormat_TextDirection_TEXTDIRECTIONUNSPECIFIED,
+  CellFormat_TextDirection_LEFTTORIGHT,
+  CellFormat_TextDirection_RIGHTTOLEFT,
+  CellFormat_TextDirection
+  #-}
+
+-- | The vertical alignment of the value in the cell.
+newtype CellFormat_VerticalAlignment = CellFormat_VerticalAlignment {fromCellFormat_VerticalAlignment :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The vertical alignment is not specified. Do not use this.
+pattern CellFormat_VerticalAlignment_VERTICALALIGNUNSPECIFIED :: CellFormat_VerticalAlignment
+pattern CellFormat_VerticalAlignment_VERTICALALIGNUNSPECIFIED = CellFormat_VerticalAlignment "VERTICAL_ALIGN_UNSPECIFIED"
+
+-- | The text is explicitly aligned to the top of the cell.
+pattern CellFormat_VerticalAlignment_Top :: CellFormat_VerticalAlignment
+pattern CellFormat_VerticalAlignment_Top = CellFormat_VerticalAlignment "TOP"
+
+-- | The text is explicitly aligned to the middle of the cell.
+pattern CellFormat_VerticalAlignment_Middle :: CellFormat_VerticalAlignment
+pattern CellFormat_VerticalAlignment_Middle = CellFormat_VerticalAlignment "MIDDLE"
+
+-- | The text is explicitly aligned to the bottom of the cell.
+pattern CellFormat_VerticalAlignment_Bottom :: CellFormat_VerticalAlignment
+pattern CellFormat_VerticalAlignment_Bottom = CellFormat_VerticalAlignment "BOTTOM"
+
+{-# COMPLETE
+  CellFormat_VerticalAlignment_VERTICALALIGNUNSPECIFIED,
+  CellFormat_VerticalAlignment_Top,
+  CellFormat_VerticalAlignment_Middle,
+  CellFormat_VerticalAlignment_Bottom,
+  CellFormat_VerticalAlignment
+  #-}
+
+-- | The wrap strategy for the value in the cell.
+newtype CellFormat_WrapStrategy = CellFormat_WrapStrategy {fromCellFormat_WrapStrategy :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern CellFormat_WrapStrategy_WRAPSTRATEGYUNSPECIFIED :: CellFormat_WrapStrategy
+pattern CellFormat_WrapStrategy_WRAPSTRATEGYUNSPECIFIED = CellFormat_WrapStrategy "WRAP_STRATEGY_UNSPECIFIED"
+
+-- | 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. |
+pattern CellFormat_WrapStrategy_OVERFLOWCELL :: CellFormat_WrapStrategy
+pattern CellFormat_WrapStrategy_OVERFLOWCELL = CellFormat_WrapStrategy "OVERFLOW_CELL"
+
+-- | 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. |
+pattern CellFormat_WrapStrategy_LEGACYWRAP :: CellFormat_WrapStrategy
+pattern CellFormat_WrapStrategy_LEGACYWRAP = CellFormat_WrapStrategy "LEGACY_WRAP"
+
+-- | 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. |
+pattern CellFormat_WrapStrategy_Clip :: CellFormat_WrapStrategy
+pattern CellFormat_WrapStrategy_Clip = CellFormat_WrapStrategy "CLIP"
+
+-- | 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. |
+pattern CellFormat_WrapStrategy_Wrap :: CellFormat_WrapStrategy
+pattern CellFormat_WrapStrategy_Wrap = CellFormat_WrapStrategy "WRAP"
+
+{-# COMPLETE
+  CellFormat_WrapStrategy_WRAPSTRATEGYUNSPECIFIED,
+  CellFormat_WrapStrategy_OVERFLOWCELL,
+  CellFormat_WrapStrategy_LEGACYWRAP,
+  CellFormat_WrapStrategy_Clip,
+  CellFormat_WrapStrategy_Wrap,
+  CellFormat_WrapStrategy
+  #-}
+
+-- | The view window\'s mode.
+newtype ChartAxisViewWindowOptions_ViewWindowMode = ChartAxisViewWindowOptions_ViewWindowMode {fromChartAxisViewWindowOptions_ViewWindowMode :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default view window mode used in the Sheets editor for this chart type. In most cases, if set, the default mode is equivalent to @PRETTY@.
+pattern ChartAxisViewWindowOptions_ViewWindowMode_DEFAULTVIEWWINDOWMODE :: ChartAxisViewWindowOptions_ViewWindowMode
+pattern ChartAxisViewWindowOptions_ViewWindowMode_DEFAULTVIEWWINDOWMODE = ChartAxisViewWindowOptions_ViewWindowMode "DEFAULT_VIEW_WINDOW_MODE"
+
+-- | Do not use. Represents that the currently set mode is not supported by the API.
+pattern ChartAxisViewWindowOptions_ViewWindowMode_VIEWWINDOWMODEUNSUPPORTED :: ChartAxisViewWindowOptions_ViewWindowMode
+pattern ChartAxisViewWindowOptions_ViewWindowMode_VIEWWINDOWMODEUNSUPPORTED = ChartAxisViewWindowOptions_ViewWindowMode "VIEW_WINDOW_MODE_UNSUPPORTED"
+
+-- | Follows the min and max exactly if specified. If a value is unspecified, it will fall back to the @PRETTY@ value.
+pattern ChartAxisViewWindowOptions_ViewWindowMode_Explicit :: ChartAxisViewWindowOptions_ViewWindowMode
+pattern ChartAxisViewWindowOptions_ViewWindowMode_Explicit = ChartAxisViewWindowOptions_ViewWindowMode "EXPLICIT"
+
+-- | Chooses a min and max that make the chart look good. Both min and max are ignored in this mode.
+pattern ChartAxisViewWindowOptions_ViewWindowMode_Pretty :: ChartAxisViewWindowOptions_ViewWindowMode
+pattern ChartAxisViewWindowOptions_ViewWindowMode_Pretty = ChartAxisViewWindowOptions_ViewWindowMode "PRETTY"
+
+{-# COMPLETE
+  ChartAxisViewWindowOptions_ViewWindowMode_DEFAULTVIEWWINDOWMODE,
+  ChartAxisViewWindowOptions_ViewWindowMode_VIEWWINDOWMODEUNSUPPORTED,
+  ChartAxisViewWindowOptions_ViewWindowMode_Explicit,
+  ChartAxisViewWindowOptions_ViewWindowMode_Pretty,
+  ChartAxisViewWindowOptions_ViewWindowMode
+  #-}
+
+-- | The aggregation type for the series of a data source chart. Only supported for data source charts.
+newtype ChartData_AggregateType = ChartData_AggregateType {fromChartData_AggregateType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern ChartData_AggregateType_CHARTAGGREGATETYPEUNSPECIFIED :: ChartData_AggregateType
+pattern ChartData_AggregateType_CHARTAGGREGATETYPEUNSPECIFIED = ChartData_AggregateType "CHART_AGGREGATE_TYPE_UNSPECIFIED"
+
+-- | Average aggregate function.
+pattern ChartData_AggregateType_Average :: ChartData_AggregateType
+pattern ChartData_AggregateType_Average = ChartData_AggregateType "AVERAGE"
+
+-- | Count aggregate function.
+pattern ChartData_AggregateType_Count :: ChartData_AggregateType
+pattern ChartData_AggregateType_Count = ChartData_AggregateType "COUNT"
+
+-- | Maximum aggregate function.
+pattern ChartData_AggregateType_Max :: ChartData_AggregateType
+pattern ChartData_AggregateType_Max = ChartData_AggregateType "MAX"
+
+-- | Median aggregate function.
+pattern ChartData_AggregateType_Median :: ChartData_AggregateType
+pattern ChartData_AggregateType_Median = ChartData_AggregateType "MEDIAN"
+
+-- | Minimum aggregate function.
+pattern ChartData_AggregateType_Min :: ChartData_AggregateType
+pattern ChartData_AggregateType_Min = ChartData_AggregateType "MIN"
+
+-- | Sum aggregate function.
+pattern ChartData_AggregateType_Sum :: ChartData_AggregateType
+pattern ChartData_AggregateType_Sum = ChartData_AggregateType "SUM"
+
+{-# COMPLETE
+  ChartData_AggregateType_CHARTAGGREGATETYPEUNSPECIFIED,
+  ChartData_AggregateType_Average,
+  ChartData_AggregateType_Count,
+  ChartData_AggregateType_Max,
+  ChartData_AggregateType_Median,
+  ChartData_AggregateType_Min,
+  ChartData_AggregateType_Sum,
+  ChartData_AggregateType
+  #-}
+
+-- | The type of date-time grouping to apply.
+newtype ChartDateTimeRule_Type = ChartDateTimeRule_Type {fromChartDateTimeRule_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default type, do not use.
+pattern ChartDateTimeRule_Type_CHARTDATETIMERULETYPEUNSPECIFIED :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_CHARTDATETIMERULETYPEUNSPECIFIED = ChartDateTimeRule_Type "CHART_DATE_TIME_RULE_TYPE_UNSPECIFIED"
+
+-- | Group dates by second, from 0 to 59.
+pattern ChartDateTimeRule_Type_Second :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_Second = ChartDateTimeRule_Type "SECOND"
+
+-- | Group dates by minute, from 0 to 59.
+pattern ChartDateTimeRule_Type_Minute :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_Minute = ChartDateTimeRule_Type "MINUTE"
+
+-- | Group dates by hour using a 24-hour system, from 0 to 23.
+pattern ChartDateTimeRule_Type_Hour :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_Hour = ChartDateTimeRule_Type "HOUR"
+
+-- | Group dates by hour and minute using a 24-hour system, for example 19:45.
+pattern ChartDateTimeRule_Type_HOURMINUTE :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_HOURMINUTE = ChartDateTimeRule_Type "HOUR_MINUTE"
+
+-- | 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.
+pattern ChartDateTimeRule_Type_HOURMINUTEAMPM :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_HOURMINUTEAMPM = ChartDateTimeRule_Type "HOUR_MINUTE_AMPM"
+
+-- | Group dates by day of week, for example Sunday. The days of the week will be translated based on the spreadsheet locale.
+pattern ChartDateTimeRule_Type_DAYOFWEEK :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_DAYOFWEEK = ChartDateTimeRule_Type "DAY_OF_WEEK"
+
+-- | 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.
+pattern ChartDateTimeRule_Type_DAYOFYEAR :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_DAYOFYEAR = ChartDateTimeRule_Type "DAY_OF_YEAR"
+
+-- | Group dates by day of month, from 1 to 31.
+pattern ChartDateTimeRule_Type_DAYOFMONTH :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_DAYOFMONTH = ChartDateTimeRule_Type "DAY_OF_MONTH"
+
+-- | Group dates by day and month, for example 22-Nov. The month is translated based on the spreadsheet locale.
+pattern ChartDateTimeRule_Type_DAYMONTH :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_DAYMONTH = ChartDateTimeRule_Type "DAY_MONTH"
+
+-- | Group dates by month, for example Nov. The month is translated based on the spreadsheet locale.
+pattern ChartDateTimeRule_Type_Month :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_Month = ChartDateTimeRule_Type "MONTH"
+
+-- | Group dates by quarter, for example Q1 (which represents Jan-Mar).
+pattern ChartDateTimeRule_Type_Quarter :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_Quarter = ChartDateTimeRule_Type "QUARTER"
+
+-- | Group dates by year, for example 2008.
+pattern ChartDateTimeRule_Type_Year :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_Year = ChartDateTimeRule_Type "YEAR"
+
+-- | Group dates by year and month, for example 2008-Nov. The month is translated based on the spreadsheet locale.
+pattern ChartDateTimeRule_Type_YEARMONTH :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_YEARMONTH = ChartDateTimeRule_Type "YEAR_MONTH"
+
+-- | Group dates by year and quarter, for example 2008 Q4.
+pattern ChartDateTimeRule_Type_YEARQUARTER :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_YEARQUARTER = ChartDateTimeRule_Type "YEAR_QUARTER"
+
+-- | Group dates by year, month, and day, for example 2008-11-22.
+pattern ChartDateTimeRule_Type_YEARMONTHDAY :: ChartDateTimeRule_Type
+pattern ChartDateTimeRule_Type_YEARMONTHDAY = ChartDateTimeRule_Type "YEAR_MONTH_DAY"
+
+{-# COMPLETE
+  ChartDateTimeRule_Type_CHARTDATETIMERULETYPEUNSPECIFIED,
+  ChartDateTimeRule_Type_Second,
+  ChartDateTimeRule_Type_Minute,
+  ChartDateTimeRule_Type_Hour,
+  ChartDateTimeRule_Type_HOURMINUTE,
+  ChartDateTimeRule_Type_HOURMINUTEAMPM,
+  ChartDateTimeRule_Type_DAYOFWEEK,
+  ChartDateTimeRule_Type_DAYOFYEAR,
+  ChartDateTimeRule_Type_DAYOFMONTH,
+  ChartDateTimeRule_Type_DAYMONTH,
+  ChartDateTimeRule_Type_Month,
+  ChartDateTimeRule_Type_Quarter,
+  ChartDateTimeRule_Type_Year,
+  ChartDateTimeRule_Type_YEARMONTH,
+  ChartDateTimeRule_Type_YEARQUARTER,
+  ChartDateTimeRule_Type_YEARMONTHDAY,
+  ChartDateTimeRule_Type
+  #-}
+
+-- | Determines how the charts will use hidden rows or columns.
+newtype ChartSpec_HiddenDimensionStrategy = ChartSpec_HiddenDimensionStrategy {fromChartSpec_HiddenDimensionStrategy :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern ChartSpec_HiddenDimensionStrategy_CHARTHIDDENDIMENSIONSTRATEGYUNSPECIFIED :: ChartSpec_HiddenDimensionStrategy
+pattern ChartSpec_HiddenDimensionStrategy_CHARTHIDDENDIMENSIONSTRATEGYUNSPECIFIED = ChartSpec_HiddenDimensionStrategy "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED"
+
+-- | Charts will skip hidden rows and columns.
+pattern ChartSpec_HiddenDimensionStrategy_SKIPHIDDENROWSANDCOLUMNS :: ChartSpec_HiddenDimensionStrategy
+pattern ChartSpec_HiddenDimensionStrategy_SKIPHIDDENROWSANDCOLUMNS = ChartSpec_HiddenDimensionStrategy "SKIP_HIDDEN_ROWS_AND_COLUMNS"
+
+-- | Charts will skip hidden rows only.
+pattern ChartSpec_HiddenDimensionStrategy_SKIPHIDDENROWS :: ChartSpec_HiddenDimensionStrategy
+pattern ChartSpec_HiddenDimensionStrategy_SKIPHIDDENROWS = ChartSpec_HiddenDimensionStrategy "SKIP_HIDDEN_ROWS"
+
+-- | Charts will skip hidden columns only.
+pattern ChartSpec_HiddenDimensionStrategy_SKIPHIDDENCOLUMNS :: ChartSpec_HiddenDimensionStrategy
+pattern ChartSpec_HiddenDimensionStrategy_SKIPHIDDENCOLUMNS = ChartSpec_HiddenDimensionStrategy "SKIP_HIDDEN_COLUMNS"
+
+-- | Charts will not skip any hidden rows or columns.
+pattern ChartSpec_HiddenDimensionStrategy_SHOWALL :: ChartSpec_HiddenDimensionStrategy
+pattern ChartSpec_HiddenDimensionStrategy_SHOWALL = ChartSpec_HiddenDimensionStrategy "SHOW_ALL"
+
+{-# COMPLETE
+  ChartSpec_HiddenDimensionStrategy_CHARTHIDDENDIMENSIONSTRATEGYUNSPECIFIED,
+  ChartSpec_HiddenDimensionStrategy_SKIPHIDDENROWSANDCOLUMNS,
+  ChartSpec_HiddenDimensionStrategy_SKIPHIDDENROWS,
+  ChartSpec_HiddenDimensionStrategy_SKIPHIDDENCOLUMNS,
+  ChartSpec_HiddenDimensionStrategy_SHOWALL,
+  ChartSpec_HiddenDimensionStrategy
+  #-}
+
+-- | Theme color.
+newtype ColorStyle_ThemeColor = ColorStyle_ThemeColor {fromColorStyle_ThemeColor :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified theme color
+pattern ColorStyle_ThemeColor_THEMECOLORTYPEUNSPECIFIED :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_THEMECOLORTYPEUNSPECIFIED = ColorStyle_ThemeColor "THEME_COLOR_TYPE_UNSPECIFIED"
+
+-- | Represents the primary text color
+pattern ColorStyle_ThemeColor_Text :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_Text = ColorStyle_ThemeColor "TEXT"
+
+-- | Represents the primary background color
+pattern ColorStyle_ThemeColor_Background :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_Background = ColorStyle_ThemeColor "BACKGROUND"
+
+-- | Represents the first accent color
+pattern ColorStyle_ThemeColor_ACCENT1 :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_ACCENT1 = ColorStyle_ThemeColor "ACCENT1"
+
+-- | Represents the second accent color
+pattern ColorStyle_ThemeColor_ACCENT2 :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_ACCENT2 = ColorStyle_ThemeColor "ACCENT2"
+
+-- | Represents the third accent color
+pattern ColorStyle_ThemeColor_ACCENT3 :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_ACCENT3 = ColorStyle_ThemeColor "ACCENT3"
+
+-- | Represents the fourth accent color
+pattern ColorStyle_ThemeColor_ACCENT4 :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_ACCENT4 = ColorStyle_ThemeColor "ACCENT4"
+
+-- | Represents the fifth accent color
+pattern ColorStyle_ThemeColor_ACCENT5 :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_ACCENT5 = ColorStyle_ThemeColor "ACCENT5"
+
+-- | Represents the sixth accent color
+pattern ColorStyle_ThemeColor_ACCENT6 :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_ACCENT6 = ColorStyle_ThemeColor "ACCENT6"
+
+-- | Represents the color to use for hyperlinks
+pattern ColorStyle_ThemeColor_Link :: ColorStyle_ThemeColor
+pattern ColorStyle_ThemeColor_Link = ColorStyle_ThemeColor "LINK"
+
+{-# COMPLETE
+  ColorStyle_ThemeColor_THEMECOLORTYPEUNSPECIFIED,
+  ColorStyle_ThemeColor_Text,
+  ColorStyle_ThemeColor_Background,
+  ColorStyle_ThemeColor_ACCENT1,
+  ColorStyle_ThemeColor_ACCENT2,
+  ColorStyle_ThemeColor_ACCENT3,
+  ColorStyle_ThemeColor_ACCENT4,
+  ColorStyle_ThemeColor_ACCENT5,
+  ColorStyle_ThemeColor_ACCENT6,
+  ColorStyle_ThemeColor_Link,
+  ColorStyle_ThemeColor
+  #-}
+
+-- | 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.
+newtype ConditionValue_RelativeDate = ConditionValue_RelativeDate {fromConditionValue_RelativeDate :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern ConditionValue_RelativeDate_RELATIVEDATEUNSPECIFIED :: ConditionValue_RelativeDate
+pattern ConditionValue_RelativeDate_RELATIVEDATEUNSPECIFIED = ConditionValue_RelativeDate "RELATIVE_DATE_UNSPECIFIED"
+
+-- | The value is one year before today.
+pattern ConditionValue_RelativeDate_PASTYEAR :: ConditionValue_RelativeDate
+pattern ConditionValue_RelativeDate_PASTYEAR = ConditionValue_RelativeDate "PAST_YEAR"
+
+-- | The value is one month before today.
+pattern ConditionValue_RelativeDate_PASTMONTH :: ConditionValue_RelativeDate
+pattern ConditionValue_RelativeDate_PASTMONTH = ConditionValue_RelativeDate "PAST_MONTH"
+
+-- | The value is one week before today.
+pattern ConditionValue_RelativeDate_PASTWEEK :: ConditionValue_RelativeDate
+pattern ConditionValue_RelativeDate_PASTWEEK = ConditionValue_RelativeDate "PAST_WEEK"
+
+-- | The value is yesterday.
+pattern ConditionValue_RelativeDate_Yesterday :: ConditionValue_RelativeDate
+pattern ConditionValue_RelativeDate_Yesterday = ConditionValue_RelativeDate "YESTERDAY"
+
+-- | The value is today.
+pattern ConditionValue_RelativeDate_Today :: ConditionValue_RelativeDate
+pattern ConditionValue_RelativeDate_Today = ConditionValue_RelativeDate "TODAY"
+
+-- | The value is tomorrow.
+pattern ConditionValue_RelativeDate_Tomorrow :: ConditionValue_RelativeDate
+pattern ConditionValue_RelativeDate_Tomorrow = ConditionValue_RelativeDate "TOMORROW"
+
+{-# COMPLETE
+  ConditionValue_RelativeDate_RELATIVEDATEUNSPECIFIED,
+  ConditionValue_RelativeDate_PASTYEAR,
+  ConditionValue_RelativeDate_PASTMONTH,
+  ConditionValue_RelativeDate_PASTWEEK,
+  ConditionValue_RelativeDate_Yesterday,
+  ConditionValue_RelativeDate_Today,
+  ConditionValue_RelativeDate_Tomorrow,
+  ConditionValue_RelativeDate
+  #-}
+
+-- | How that data should be oriented when pasting.
+newtype CopyPasteRequest_PasteOrientation = CopyPasteRequest_PasteOrientation {fromCopyPasteRequest_PasteOrientation :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Paste normally.
+pattern CopyPasteRequest_PasteOrientation_Normal :: CopyPasteRequest_PasteOrientation
+pattern CopyPasteRequest_PasteOrientation_Normal = CopyPasteRequest_PasteOrientation "NORMAL"
+
+-- | Paste transposed, where all rows become columns and vice versa.
+pattern CopyPasteRequest_PasteOrientation_Transpose :: CopyPasteRequest_PasteOrientation
+pattern CopyPasteRequest_PasteOrientation_Transpose = CopyPasteRequest_PasteOrientation "TRANSPOSE"
+
+{-# COMPLETE
+  CopyPasteRequest_PasteOrientation_Normal,
+  CopyPasteRequest_PasteOrientation_Transpose,
+  CopyPasteRequest_PasteOrientation
+  #-}
+
+-- | What kind of data to paste.
+newtype CopyPasteRequest_PasteType = CopyPasteRequest_PasteType {fromCopyPasteRequest_PasteType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Paste values, formulas, formats, and merges.
+pattern CopyPasteRequest_PasteType_PASTENORMAL :: CopyPasteRequest_PasteType
+pattern CopyPasteRequest_PasteType_PASTENORMAL = CopyPasteRequest_PasteType "PASTE_NORMAL"
+
+-- | Paste the values ONLY without formats, formulas, or merges.
+pattern CopyPasteRequest_PasteType_PASTEVALUES :: CopyPasteRequest_PasteType
+pattern CopyPasteRequest_PasteType_PASTEVALUES = CopyPasteRequest_PasteType "PASTE_VALUES"
+
+-- | Paste the format and data validation only.
+pattern CopyPasteRequest_PasteType_PASTEFORMAT :: CopyPasteRequest_PasteType
+pattern CopyPasteRequest_PasteType_PASTEFORMAT = CopyPasteRequest_PasteType "PASTE_FORMAT"
+
+-- | Like @PASTE_NORMAL@ but without borders.
+pattern CopyPasteRequest_PasteType_PASTENOBORDERS :: CopyPasteRequest_PasteType
+pattern CopyPasteRequest_PasteType_PASTENOBORDERS = CopyPasteRequest_PasteType "PASTE_NO_BORDERS"
+
+-- | Paste the formulas only.
+pattern CopyPasteRequest_PasteType_PASTEFORMULA :: CopyPasteRequest_PasteType
+pattern CopyPasteRequest_PasteType_PASTEFORMULA = CopyPasteRequest_PasteType "PASTE_FORMULA"
+
+-- | Paste the data validation only.
+pattern CopyPasteRequest_PasteType_PASTEDATAVALIDATION :: CopyPasteRequest_PasteType
+pattern CopyPasteRequest_PasteType_PASTEDATAVALIDATION = CopyPasteRequest_PasteType "PASTE_DATA_VALIDATION"
+
+-- | Paste the conditional formatting rules only.
+pattern CopyPasteRequest_PasteType_PASTECONDITIONALFORMATTING :: CopyPasteRequest_PasteType
+pattern CopyPasteRequest_PasteType_PASTECONDITIONALFORMATTING = CopyPasteRequest_PasteType "PASTE_CONDITIONAL_FORMATTING"
+
+{-# COMPLETE
+  CopyPasteRequest_PasteType_PASTENORMAL,
+  CopyPasteRequest_PasteType_PASTEVALUES,
+  CopyPasteRequest_PasteType_PASTEFORMAT,
+  CopyPasteRequest_PasteType_PASTENOBORDERS,
+  CopyPasteRequest_PasteType_PASTEFORMULA,
+  CopyPasteRequest_PasteType_PASTEDATAVALIDATION,
+  CopyPasteRequest_PasteType_PASTECONDITIONALFORMATTING,
+  CopyPasteRequest_PasteType
+  #-}
+
+-- | What kind of data to paste. All the source data will be cut, regardless of what is pasted.
+newtype CutPasteRequest_PasteType = CutPasteRequest_PasteType {fromCutPasteRequest_PasteType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Paste values, formulas, formats, and merges.
+pattern CutPasteRequest_PasteType_PASTENORMAL :: CutPasteRequest_PasteType
+pattern CutPasteRequest_PasteType_PASTENORMAL = CutPasteRequest_PasteType "PASTE_NORMAL"
+
+-- | Paste the values ONLY without formats, formulas, or merges.
+pattern CutPasteRequest_PasteType_PASTEVALUES :: CutPasteRequest_PasteType
+pattern CutPasteRequest_PasteType_PASTEVALUES = CutPasteRequest_PasteType "PASTE_VALUES"
+
+-- | Paste the format and data validation only.
+pattern CutPasteRequest_PasteType_PASTEFORMAT :: CutPasteRequest_PasteType
+pattern CutPasteRequest_PasteType_PASTEFORMAT = CutPasteRequest_PasteType "PASTE_FORMAT"
+
+-- | Like @PASTE_NORMAL@ but without borders.
+pattern CutPasteRequest_PasteType_PASTENOBORDERS :: CutPasteRequest_PasteType
+pattern CutPasteRequest_PasteType_PASTENOBORDERS = CutPasteRequest_PasteType "PASTE_NO_BORDERS"
+
+-- | Paste the formulas only.
+pattern CutPasteRequest_PasteType_PASTEFORMULA :: CutPasteRequest_PasteType
+pattern CutPasteRequest_PasteType_PASTEFORMULA = CutPasteRequest_PasteType "PASTE_FORMULA"
+
+-- | Paste the data validation only.
+pattern CutPasteRequest_PasteType_PASTEDATAVALIDATION :: CutPasteRequest_PasteType
+pattern CutPasteRequest_PasteType_PASTEDATAVALIDATION = CutPasteRequest_PasteType "PASTE_DATA_VALIDATION"
+
+-- | Paste the conditional formatting rules only.
+pattern CutPasteRequest_PasteType_PASTECONDITIONALFORMATTING :: CutPasteRequest_PasteType
+pattern CutPasteRequest_PasteType_PASTECONDITIONALFORMATTING = CutPasteRequest_PasteType "PASTE_CONDITIONAL_FORMATTING"
+
+{-# COMPLETE
+  CutPasteRequest_PasteType_PASTENORMAL,
+  CutPasteRequest_PasteType_PASTEVALUES,
+  CutPasteRequest_PasteType_PASTEFORMAT,
+  CutPasteRequest_PasteType_PASTENOBORDERS,
+  CutPasteRequest_PasteType_PASTEFORMULA,
+  CutPasteRequest_PasteType_PASTEDATAVALIDATION,
+  CutPasteRequest_PasteType_PASTECONDITIONALFORMATTING,
+  CutPasteRequest_PasteType
+  #-}
+
+-- | The error code.
+newtype DataExecutionStatus_ErrorCode = DataExecutionStatus_ErrorCode {fromDataExecutionStatus_ErrorCode :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern DataExecutionStatus_ErrorCode_DATAEXECUTIONERRORCODEUNSPECIFIED :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_DATAEXECUTIONERRORCODEUNSPECIFIED = DataExecutionStatus_ErrorCode "DATA_EXECUTION_ERROR_CODE_UNSPECIFIED"
+
+-- | The data execution timed out.
+pattern DataExecutionStatus_ErrorCode_TIMEDOUT :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_TIMEDOUT = DataExecutionStatus_ErrorCode "TIMED_OUT"
+
+-- | The data execution returns more rows than the limit.
+pattern DataExecutionStatus_ErrorCode_TOOMANYROWS :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_TOOMANYROWS = DataExecutionStatus_ErrorCode "TOO_MANY_ROWS"
+
+-- | The data execution returns more columns than the limit.
+pattern DataExecutionStatus_ErrorCode_TOOMANYCOLUMNS :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_TOOMANYCOLUMNS = DataExecutionStatus_ErrorCode "TOO_MANY_COLUMNS"
+
+-- | The data execution returns more cells than the limit.
+pattern DataExecutionStatus_ErrorCode_TOOMANYCELLS :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_TOOMANYCELLS = DataExecutionStatus_ErrorCode "TOO_MANY_CELLS"
+
+-- | Error is received from the backend data execution engine (e.g. BigQuery). Check error_message for details.
+pattern DataExecutionStatus_ErrorCode_Engine :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_Engine = DataExecutionStatus_ErrorCode "ENGINE"
+
+-- | One or some of the provided data source parameters are invalid.
+pattern DataExecutionStatus_ErrorCode_PARAMETERINVALID :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_PARAMETERINVALID = DataExecutionStatus_ErrorCode "PARAMETER_INVALID"
+
+-- | The data execution returns an unsupported data type.
+pattern DataExecutionStatus_ErrorCode_UNSUPPORTEDDATATYPE :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_UNSUPPORTEDDATATYPE = DataExecutionStatus_ErrorCode "UNSUPPORTED_DATA_TYPE"
+
+-- | The data execution returns duplicate column names or aliases.
+pattern DataExecutionStatus_ErrorCode_DUPLICATECOLUMNNAMES :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_DUPLICATECOLUMNNAMES = DataExecutionStatus_ErrorCode "DUPLICATE_COLUMN_NAMES"
+
+-- | The data execution is interrupted. Please refresh later.
+pattern DataExecutionStatus_ErrorCode_Interrupted :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_Interrupted = DataExecutionStatus_ErrorCode "INTERRUPTED"
+
+-- | The data execution is currently in progress, can not be refreshed until it completes.
+pattern DataExecutionStatus_ErrorCode_CONCURRENTQUERY :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_CONCURRENTQUERY = DataExecutionStatus_ErrorCode "CONCURRENT_QUERY"
+
+-- | Other errors.
+pattern DataExecutionStatus_ErrorCode_Other :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_Other = DataExecutionStatus_ErrorCode "OTHER"
+
+-- | The data execution returns values that exceed the maximum characters allowed in a single cell.
+pattern DataExecutionStatus_ErrorCode_TOOMANYCHARSPERCELL :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_TOOMANYCHARSPERCELL = DataExecutionStatus_ErrorCode "TOO_MANY_CHARS_PER_CELL"
+
+-- | The database referenced by the data source is not found. *\/
+pattern DataExecutionStatus_ErrorCode_DATANOTFOUND :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_DATANOTFOUND = DataExecutionStatus_ErrorCode "DATA_NOT_FOUND"
+
+-- | The user does not have access to the database referenced by the data source.
+pattern DataExecutionStatus_ErrorCode_PERMISSIONDENIED :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_PERMISSIONDENIED = DataExecutionStatus_ErrorCode "PERMISSION_DENIED"
+
+-- | The data execution returns columns with missing aliases.
+pattern DataExecutionStatus_ErrorCode_MISSINGCOLUMNALIAS :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_MISSINGCOLUMNALIAS = DataExecutionStatus_ErrorCode "MISSING_COLUMN_ALIAS"
+
+-- | The data source object does not exist.
+pattern DataExecutionStatus_ErrorCode_OBJECTNOTFOUND :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_OBJECTNOTFOUND = DataExecutionStatus_ErrorCode "OBJECT_NOT_FOUND"
+
+-- | The data source object is currently in error state. To force refresh, set force in RefreshDataSourceRequest.
+pattern DataExecutionStatus_ErrorCode_OBJECTINERRORSTATE :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_OBJECTINERRORSTATE = DataExecutionStatus_ErrorCode "OBJECT_IN_ERROR_STATE"
+
+-- | The data source object specification is invalid.
+pattern DataExecutionStatus_ErrorCode_OBJECTSPECINVALID :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_OBJECTSPECINVALID = DataExecutionStatus_ErrorCode "OBJECT_SPEC_INVALID"
+
+-- | The data execution has been cancelled.
+pattern DataExecutionStatus_ErrorCode_DATAEXECUTIONCANCELLED :: DataExecutionStatus_ErrorCode
+pattern DataExecutionStatus_ErrorCode_DATAEXECUTIONCANCELLED = DataExecutionStatus_ErrorCode "DATA_EXECUTION_CANCELLED"
+
+{-# COMPLETE
+  DataExecutionStatus_ErrorCode_DATAEXECUTIONERRORCODEUNSPECIFIED,
+  DataExecutionStatus_ErrorCode_TIMEDOUT,
+  DataExecutionStatus_ErrorCode_TOOMANYROWS,
+  DataExecutionStatus_ErrorCode_TOOMANYCOLUMNS,
+  DataExecutionStatus_ErrorCode_TOOMANYCELLS,
+  DataExecutionStatus_ErrorCode_Engine,
+  DataExecutionStatus_ErrorCode_PARAMETERINVALID,
+  DataExecutionStatus_ErrorCode_UNSUPPORTEDDATATYPE,
+  DataExecutionStatus_ErrorCode_DUPLICATECOLUMNNAMES,
+  DataExecutionStatus_ErrorCode_Interrupted,
+  DataExecutionStatus_ErrorCode_CONCURRENTQUERY,
+  DataExecutionStatus_ErrorCode_Other,
+  DataExecutionStatus_ErrorCode_TOOMANYCHARSPERCELL,
+  DataExecutionStatus_ErrorCode_DATANOTFOUND,
+  DataExecutionStatus_ErrorCode_PERMISSIONDENIED,
+  DataExecutionStatus_ErrorCode_MISSINGCOLUMNALIAS,
+  DataExecutionStatus_ErrorCode_OBJECTNOTFOUND,
+  DataExecutionStatus_ErrorCode_OBJECTINERRORSTATE,
+  DataExecutionStatus_ErrorCode_OBJECTSPECINVALID,
+  DataExecutionStatus_ErrorCode_DATAEXECUTIONCANCELLED,
+  DataExecutionStatus_ErrorCode
+  #-}
+
+-- | The state of the data execution.
+newtype DataExecutionStatus_State = DataExecutionStatus_State {fromDataExecutionStatus_State :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern DataExecutionStatus_State_DATAEXECUTIONSTATEUNSPECIFIED :: DataExecutionStatus_State
+pattern DataExecutionStatus_State_DATAEXECUTIONSTATEUNSPECIFIED = DataExecutionStatus_State "DATA_EXECUTION_STATE_UNSPECIFIED"
+
+-- | The data execution has not started.
+pattern DataExecutionStatus_State_NOTSTARTED :: DataExecutionStatus_State
+pattern DataExecutionStatus_State_NOTSTARTED = DataExecutionStatus_State "NOT_STARTED"
+
+-- | The data execution has started and is running.
+pattern DataExecutionStatus_State_Running :: DataExecutionStatus_State
+pattern DataExecutionStatus_State_Running = DataExecutionStatus_State "RUNNING"
+
+-- | The data execution is currently being cancelled.
+pattern DataExecutionStatus_State_Cancelling :: DataExecutionStatus_State
+pattern DataExecutionStatus_State_Cancelling = DataExecutionStatus_State "CANCELLING"
+
+-- | The data execution has completed successfully.
+pattern DataExecutionStatus_State_Succeeded :: DataExecutionStatus_State
+pattern DataExecutionStatus_State_Succeeded = DataExecutionStatus_State "SUCCEEDED"
+
+-- | The data execution has completed with errors.
+pattern DataExecutionStatus_State_Failed :: DataExecutionStatus_State
+pattern DataExecutionStatus_State_Failed = DataExecutionStatus_State "FAILED"
+
+{-# COMPLETE
+  DataExecutionStatus_State_DATAEXECUTIONSTATEUNSPECIFIED,
+  DataExecutionStatus_State_NOTSTARTED,
+  DataExecutionStatus_State_Running,
+  DataExecutionStatus_State_Cancelling,
+  DataExecutionStatus_State_Succeeded,
+  DataExecutionStatus_State_Failed,
+  DataExecutionStatus_State
+  #-}
+
+-- | The major dimension of the values.
+newtype DataFilterValueRange_MajorDimension = DataFilterValueRange_MajorDimension {fromDataFilterValueRange_MajorDimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern DataFilterValueRange_MajorDimension_DIMENSIONUNSPECIFIED :: DataFilterValueRange_MajorDimension
+pattern DataFilterValueRange_MajorDimension_DIMENSIONUNSPECIFIED = DataFilterValueRange_MajorDimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern DataFilterValueRange_MajorDimension_Rows :: DataFilterValueRange_MajorDimension
+pattern DataFilterValueRange_MajorDimension_Rows = DataFilterValueRange_MajorDimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern DataFilterValueRange_MajorDimension_Columns :: DataFilterValueRange_MajorDimension
+pattern DataFilterValueRange_MajorDimension_Columns = DataFilterValueRange_MajorDimension "COLUMNS"
+
+{-# COMPLETE
+  DataFilterValueRange_MajorDimension_DIMENSIONUNSPECIFIED,
+  DataFilterValueRange_MajorDimension_Rows,
+  DataFilterValueRange_MajorDimension_Columns,
+  DataFilterValueRange_MajorDimension
+  #-}
+
+-- | The placement of the data label relative to the labeled data.
+newtype DataLabel_Placement = DataLabel_Placement {fromDataLabel_Placement :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The positioning is determined automatically by the renderer.
+pattern DataLabel_Placement_DATALABELPLACEMENTUNSPECIFIED :: DataLabel_Placement
+pattern DataLabel_Placement_DATALABELPLACEMENTUNSPECIFIED = DataLabel_Placement "DATA_LABEL_PLACEMENT_UNSPECIFIED"
+
+-- | Center within a bar or column, both horizontally and vertically.
+pattern DataLabel_Placement_Center :: DataLabel_Placement
+pattern DataLabel_Placement_Center = DataLabel_Placement "CENTER"
+
+-- | To the left of a data point.
+pattern DataLabel_Placement_Left' :: DataLabel_Placement
+pattern DataLabel_Placement_Left' = DataLabel_Placement "LEFT"
+
+-- | To the right of a data point.
+pattern DataLabel_Placement_Right' :: DataLabel_Placement
+pattern DataLabel_Placement_Right' = DataLabel_Placement "RIGHT"
+
+-- | Above a data point.
+pattern DataLabel_Placement_Above :: DataLabel_Placement
+pattern DataLabel_Placement_Above = DataLabel_Placement "ABOVE"
+
+-- | Below a data point.
+pattern DataLabel_Placement_Below :: DataLabel_Placement
+pattern DataLabel_Placement_Below = DataLabel_Placement "BELOW"
+
+-- | Inside a bar or column at the end (top if positive, bottom if negative).
+pattern DataLabel_Placement_INSIDEEND :: DataLabel_Placement
+pattern DataLabel_Placement_INSIDEEND = DataLabel_Placement "INSIDE_END"
+
+-- | Inside a bar or column at the base.
+pattern DataLabel_Placement_INSIDEBASE :: DataLabel_Placement
+pattern DataLabel_Placement_INSIDEBASE = DataLabel_Placement "INSIDE_BASE"
+
+-- | Outside a bar or column at the end.
+pattern DataLabel_Placement_OUTSIDEEND :: DataLabel_Placement
+pattern DataLabel_Placement_OUTSIDEEND = DataLabel_Placement "OUTSIDE_END"
+
+{-# COMPLETE
+  DataLabel_Placement_DATALABELPLACEMENTUNSPECIFIED,
+  DataLabel_Placement_Center,
+  DataLabel_Placement_Left',
+  DataLabel_Placement_Right',
+  DataLabel_Placement_Above,
+  DataLabel_Placement_Below,
+  DataLabel_Placement_INSIDEEND,
+  DataLabel_Placement_INSIDEBASE,
+  DataLabel_Placement_OUTSIDEEND,
+  DataLabel_Placement
+  #-}
+
+-- | The type of the data label.
+newtype DataLabel_Type = DataLabel_Type {fromDataLabel_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The data label type is not specified and will be interpreted depending on the context of the data label within the chart.
+pattern DataLabel_Type_DATALABELTYPEUNSPECIFIED :: DataLabel_Type
+pattern DataLabel_Type_DATALABELTYPEUNSPECIFIED = DataLabel_Type "DATA_LABEL_TYPE_UNSPECIFIED"
+
+-- | The data label is not displayed.
+pattern DataLabel_Type_None :: DataLabel_Type
+pattern DataLabel_Type_None = DataLabel_Type "NONE"
+
+-- | The data label is displayed using values from the series data.
+pattern DataLabel_Type_Data' :: DataLabel_Type
+pattern DataLabel_Type_Data' = DataLabel_Type "DATA"
+
+-- | The data label is displayed using values from a custom data source indicated by customLabelData.
+pattern DataLabel_Type_Custom :: DataLabel_Type
+pattern DataLabel_Type_Custom = DataLabel_Type "CUSTOM"
+
+{-# COMPLETE
+  DataLabel_Type_DATALABELTYPEUNSPECIFIED,
+  DataLabel_Type_None,
+  DataLabel_Type_Data',
+  DataLabel_Type_Custom,
+  DataLabel_Type
+  #-}
+
+-- | The scope of the refresh. Must be ALL/DATA/SOURCES.
+newtype DataSourceRefreshSchedule_RefreshScope = DataSourceRefreshSchedule_RefreshScope {fromDataSourceRefreshSchedule_RefreshScope :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern DataSourceRefreshSchedule_RefreshScope_DATASOURCEREFRESHSCOPEUNSPECIFIED :: DataSourceRefreshSchedule_RefreshScope
+pattern DataSourceRefreshSchedule_RefreshScope_DATASOURCEREFRESHSCOPEUNSPECIFIED = DataSourceRefreshSchedule_RefreshScope "DATA_SOURCE_REFRESH_SCOPE_UNSPECIFIED"
+
+-- | Refreshes all data sources and their associated data source objects in the spreadsheet.
+pattern DataSourceRefreshSchedule_RefreshScope_ALLDATASOURCES :: DataSourceRefreshSchedule_RefreshScope
+pattern DataSourceRefreshSchedule_RefreshScope_ALLDATASOURCES = DataSourceRefreshSchedule_RefreshScope "ALL_DATA_SOURCES"
+
+{-# COMPLETE
+  DataSourceRefreshSchedule_RefreshScope_DATASOURCEREFRESHSCOPEUNSPECIFIED,
+  DataSourceRefreshSchedule_RefreshScope_ALLDATASOURCES,
+  DataSourceRefreshSchedule_RefreshScope
+  #-}
+
+newtype DataSourceRefreshWeeklySchedule_DaysOfWeekItem = DataSourceRefreshWeeklySchedule_DaysOfWeekItem {fromDataSourceRefreshWeeklySchedule_DaysOfWeekItem :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The day of the week is unspecified.
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_DAYOFWEEKUNSPECIFIED :: DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_DAYOFWEEKUNSPECIFIED = DataSourceRefreshWeeklySchedule_DaysOfWeekItem "DAY_OF_WEEK_UNSPECIFIED"
+
+-- | Monday
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Monday :: DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Monday = DataSourceRefreshWeeklySchedule_DaysOfWeekItem "MONDAY"
+
+-- | Tuesday
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Tuesday :: DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Tuesday = DataSourceRefreshWeeklySchedule_DaysOfWeekItem "TUESDAY"
+
+-- | Wednesday
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Wednesday :: DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Wednesday = DataSourceRefreshWeeklySchedule_DaysOfWeekItem "WEDNESDAY"
+
+-- | Thursday
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Thursday :: DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Thursday = DataSourceRefreshWeeklySchedule_DaysOfWeekItem "THURSDAY"
+
+-- | Friday
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Friday :: DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Friday = DataSourceRefreshWeeklySchedule_DaysOfWeekItem "FRIDAY"
+
+-- | Saturday
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Saturday :: DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Saturday = DataSourceRefreshWeeklySchedule_DaysOfWeekItem "SATURDAY"
+
+-- | Sunday
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Sunday :: DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+pattern DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Sunday = DataSourceRefreshWeeklySchedule_DaysOfWeekItem "SUNDAY"
+
+{-# COMPLETE
+  DataSourceRefreshWeeklySchedule_DaysOfWeekItem_DAYOFWEEKUNSPECIFIED,
+  DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Monday,
+  DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Tuesday,
+  DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Wednesday,
+  DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Thursday,
+  DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Friday,
+  DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Saturday,
+  DataSourceRefreshWeeklySchedule_DaysOfWeekItem_Sunday,
+  DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+  #-}
+
+-- | The type to select columns for the data source table. Defaults to SELECTED.
+newtype DataSourceTable_ColumnSelectionType = DataSourceTable_ColumnSelectionType {fromDataSourceTable_ColumnSelectionType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default column selection type, do not use.
+pattern DataSourceTable_ColumnSelectionType_DATASOURCETABLECOLUMNSELECTIONTYPEUNSPECIFIED :: DataSourceTable_ColumnSelectionType
+pattern DataSourceTable_ColumnSelectionType_DATASOURCETABLECOLUMNSELECTIONTYPEUNSPECIFIED = DataSourceTable_ColumnSelectionType "DATA_SOURCE_TABLE_COLUMN_SELECTION_TYPE_UNSPECIFIED"
+
+-- | Select columns specified by columns field.
+pattern DataSourceTable_ColumnSelectionType_Selected :: DataSourceTable_ColumnSelectionType
+pattern DataSourceTable_ColumnSelectionType_Selected = DataSourceTable_ColumnSelectionType "SELECTED"
+
+-- | Sync all current and future columns in the data source. If set, the data source table fetches all the columns in the data source at the time of refresh.
+pattern DataSourceTable_ColumnSelectionType_SYNCALL :: DataSourceTable_ColumnSelectionType
+pattern DataSourceTable_ColumnSelectionType_SYNCALL = DataSourceTable_ColumnSelectionType "SYNC_ALL"
+
+{-# COMPLETE
+  DataSourceTable_ColumnSelectionType_DATASOURCETABLECOLUMNSELECTIONTYPEUNSPECIFIED,
+  DataSourceTable_ColumnSelectionType_Selected,
+  DataSourceTable_ColumnSelectionType_SYNCALL,
+  DataSourceTable_ColumnSelectionType
+  #-}
+
+-- | The type of date-time grouping to apply.
+newtype DateTimeRule_Type = DateTimeRule_Type {fromDateTimeRule_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default type, do not use.
+pattern DateTimeRule_Type_DATETIMERULETYPEUNSPECIFIED :: DateTimeRule_Type
+pattern DateTimeRule_Type_DATETIMERULETYPEUNSPECIFIED = DateTimeRule_Type "DATE_TIME_RULE_TYPE_UNSPECIFIED"
+
+-- | Group dates by second, from 0 to 59.
+pattern DateTimeRule_Type_Second :: DateTimeRule_Type
+pattern DateTimeRule_Type_Second = DateTimeRule_Type "SECOND"
+
+-- | Group dates by minute, from 0 to 59.
+pattern DateTimeRule_Type_Minute :: DateTimeRule_Type
+pattern DateTimeRule_Type_Minute = DateTimeRule_Type "MINUTE"
+
+-- | Group dates by hour using a 24-hour system, from 0 to 23.
+pattern DateTimeRule_Type_Hour :: DateTimeRule_Type
+pattern DateTimeRule_Type_Hour = DateTimeRule_Type "HOUR"
+
+-- | Group dates by hour and minute using a 24-hour system, for example 19:45.
+pattern DateTimeRule_Type_HOURMINUTE :: DateTimeRule_Type
+pattern DateTimeRule_Type_HOURMINUTE = DateTimeRule_Type "HOUR_MINUTE"
+
+-- | 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.
+pattern DateTimeRule_Type_HOURMINUTEAMPM :: DateTimeRule_Type
+pattern DateTimeRule_Type_HOURMINUTEAMPM = DateTimeRule_Type "HOUR_MINUTE_AMPM"
+
+-- | Group dates by day of week, for example Sunday. The days of the week will be translated based on the spreadsheet locale.
+pattern DateTimeRule_Type_DAYOFWEEK :: DateTimeRule_Type
+pattern DateTimeRule_Type_DAYOFWEEK = DateTimeRule_Type "DAY_OF_WEEK"
+
+-- | 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.
+pattern DateTimeRule_Type_DAYOFYEAR :: DateTimeRule_Type
+pattern DateTimeRule_Type_DAYOFYEAR = DateTimeRule_Type "DAY_OF_YEAR"
+
+-- | Group dates by day of month, from 1 to 31.
+pattern DateTimeRule_Type_DAYOFMONTH :: DateTimeRule_Type
+pattern DateTimeRule_Type_DAYOFMONTH = DateTimeRule_Type "DAY_OF_MONTH"
+
+-- | Group dates by day and month, for example 22-Nov. The month is translated based on the spreadsheet locale.
+pattern DateTimeRule_Type_DAYMONTH :: DateTimeRule_Type
+pattern DateTimeRule_Type_DAYMONTH = DateTimeRule_Type "DAY_MONTH"
+
+-- | Group dates by month, for example Nov. The month is translated based on the spreadsheet locale.
+pattern DateTimeRule_Type_Month :: DateTimeRule_Type
+pattern DateTimeRule_Type_Month = DateTimeRule_Type "MONTH"
+
+-- | Group dates by quarter, for example Q1 (which represents Jan-Mar).
+pattern DateTimeRule_Type_Quarter :: DateTimeRule_Type
+pattern DateTimeRule_Type_Quarter = DateTimeRule_Type "QUARTER"
+
+-- | Group dates by year, for example 2008.
+pattern DateTimeRule_Type_Year :: DateTimeRule_Type
+pattern DateTimeRule_Type_Year = DateTimeRule_Type "YEAR"
+
+-- | Group dates by year and month, for example 2008-Nov. The month is translated based on the spreadsheet locale.
+pattern DateTimeRule_Type_YEARMONTH :: DateTimeRule_Type
+pattern DateTimeRule_Type_YEARMONTH = DateTimeRule_Type "YEAR_MONTH"
+
+-- | Group dates by year and quarter, for example 2008 Q4.
+pattern DateTimeRule_Type_YEARQUARTER :: DateTimeRule_Type
+pattern DateTimeRule_Type_YEARQUARTER = DateTimeRule_Type "YEAR_QUARTER"
+
+-- | Group dates by year, month, and day, for example 2008-11-22.
+pattern DateTimeRule_Type_YEARMONTHDAY :: DateTimeRule_Type
+pattern DateTimeRule_Type_YEARMONTHDAY = DateTimeRule_Type "YEAR_MONTH_DAY"
+
+{-# COMPLETE
+  DateTimeRule_Type_DATETIMERULETYPEUNSPECIFIED,
+  DateTimeRule_Type_Second,
+  DateTimeRule_Type_Minute,
+  DateTimeRule_Type_Hour,
+  DateTimeRule_Type_HOURMINUTE,
+  DateTimeRule_Type_HOURMINUTEAMPM,
+  DateTimeRule_Type_DAYOFWEEK,
+  DateTimeRule_Type_DAYOFYEAR,
+  DateTimeRule_Type_DAYOFMONTH,
+  DateTimeRule_Type_DAYMONTH,
+  DateTimeRule_Type_Month,
+  DateTimeRule_Type_Quarter,
+  DateTimeRule_Type_Year,
+  DateTimeRule_Type_YEARMONTH,
+  DateTimeRule_Type_YEARQUARTER,
+  DateTimeRule_Type_YEARMONTHDAY,
+  DateTimeRule_Type
+  #-}
+
+-- | 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.
+newtype DeleteRangeRequest_ShiftDimension = DeleteRangeRequest_ShiftDimension {fromDeleteRangeRequest_ShiftDimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern DeleteRangeRequest_ShiftDimension_DIMENSIONUNSPECIFIED :: DeleteRangeRequest_ShiftDimension
+pattern DeleteRangeRequest_ShiftDimension_DIMENSIONUNSPECIFIED = DeleteRangeRequest_ShiftDimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern DeleteRangeRequest_ShiftDimension_Rows :: DeleteRangeRequest_ShiftDimension
+pattern DeleteRangeRequest_ShiftDimension_Rows = DeleteRangeRequest_ShiftDimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern DeleteRangeRequest_ShiftDimension_Columns :: DeleteRangeRequest_ShiftDimension
+pattern DeleteRangeRequest_ShiftDimension_Columns = DeleteRangeRequest_ShiftDimension "COLUMNS"
+
+{-# COMPLETE
+  DeleteRangeRequest_ShiftDimension_DIMENSIONUNSPECIFIED,
+  DeleteRangeRequest_ShiftDimension_Rows,
+  DeleteRangeRequest_ShiftDimension_Columns,
+  DeleteRangeRequest_ShiftDimension
+  #-}
+
+-- | The metadata visibility. Developer metadata must always have a visibility specified.
+newtype DeveloperMetadata_Visibility = DeveloperMetadata_Visibility {fromDeveloperMetadata_Visibility :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value.
+pattern DeveloperMetadata_Visibility_DEVELOPERMETADATAVISIBILITYUNSPECIFIED :: DeveloperMetadata_Visibility
+pattern DeveloperMetadata_Visibility_DEVELOPERMETADATAVISIBILITYUNSPECIFIED = DeveloperMetadata_Visibility "DEVELOPER_METADATA_VISIBILITY_UNSPECIFIED"
+
+-- | Document-visible metadata is accessible from any developer project with access to the document.
+pattern DeveloperMetadata_Visibility_Document :: DeveloperMetadata_Visibility
+pattern DeveloperMetadata_Visibility_Document = DeveloperMetadata_Visibility "DOCUMENT"
+
+-- | Project-visible metadata is only visible to and accessible by the developer project that created the metadata.
+pattern DeveloperMetadata_Visibility_Project :: DeveloperMetadata_Visibility
+pattern DeveloperMetadata_Visibility_Project = DeveloperMetadata_Visibility "PROJECT"
+
+{-# COMPLETE
+  DeveloperMetadata_Visibility_DEVELOPERMETADATAVISIBILITYUNSPECIFIED,
+  DeveloperMetadata_Visibility_Document,
+  DeveloperMetadata_Visibility_Project,
+  DeveloperMetadata_Visibility
+  #-}
+
+-- | The type of location this object represents. This field is read-only.
+newtype DeveloperMetadataLocation_LocationType = DeveloperMetadataLocation_LocationType {fromDeveloperMetadataLocation_LocationType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value.
+pattern DeveloperMetadataLocation_LocationType_DEVELOPERMETADATALOCATIONTYPEUNSPECIFIED :: DeveloperMetadataLocation_LocationType
+pattern DeveloperMetadataLocation_LocationType_DEVELOPERMETADATALOCATIONTYPEUNSPECIFIED = DeveloperMetadataLocation_LocationType "DEVELOPER_METADATA_LOCATION_TYPE_UNSPECIFIED"
+
+-- | Developer metadata associated on an entire row dimension.
+pattern DeveloperMetadataLocation_LocationType_Row :: DeveloperMetadataLocation_LocationType
+pattern DeveloperMetadataLocation_LocationType_Row = DeveloperMetadataLocation_LocationType "ROW"
+
+-- | Developer metadata associated on an entire column dimension.
+pattern DeveloperMetadataLocation_LocationType_Column :: DeveloperMetadataLocation_LocationType
+pattern DeveloperMetadataLocation_LocationType_Column = DeveloperMetadataLocation_LocationType "COLUMN"
+
+-- | Developer metadata associated on an entire sheet.
+pattern DeveloperMetadataLocation_LocationType_Sheet :: DeveloperMetadataLocation_LocationType
+pattern DeveloperMetadataLocation_LocationType_Sheet = DeveloperMetadataLocation_LocationType "SHEET"
+
+-- | Developer metadata associated on the entire spreadsheet.
+pattern DeveloperMetadataLocation_LocationType_Spreadsheet :: DeveloperMetadataLocation_LocationType
+pattern DeveloperMetadataLocation_LocationType_Spreadsheet = DeveloperMetadataLocation_LocationType "SPREADSHEET"
+
+{-# COMPLETE
+  DeveloperMetadataLocation_LocationType_DEVELOPERMETADATALOCATIONTYPEUNSPECIFIED,
+  DeveloperMetadataLocation_LocationType_Row,
+  DeveloperMetadataLocation_LocationType_Column,
+  DeveloperMetadataLocation_LocationType_Sheet,
+  DeveloperMetadataLocation_LocationType_Spreadsheet,
+  DeveloperMetadataLocation_LocationType
+  #-}
+
+-- | 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.
+newtype DeveloperMetadataLookup_LocationMatchingStrategy = DeveloperMetadataLookup_LocationMatchingStrategy {fromDeveloperMetadataLookup_LocationMatchingStrategy :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value. This value must not be used.
+pattern DeveloperMetadataLookup_LocationMatchingStrategy_DEVELOPERMETADATALOCATIONMATCHINGSTRATEGYUNSPECIFIED :: DeveloperMetadataLookup_LocationMatchingStrategy
+pattern DeveloperMetadataLookup_LocationMatchingStrategy_DEVELOPERMETADATALOCATIONMATCHINGSTRATEGYUNSPECIFIED = DeveloperMetadataLookup_LocationMatchingStrategy "DEVELOPER_METADATA_LOCATION_MATCHING_STRATEGY_UNSPECIFIED"
+
+-- | 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.
+pattern DeveloperMetadataLookup_LocationMatchingStrategy_EXACTLOCATION :: DeveloperMetadataLookup_LocationMatchingStrategy
+pattern DeveloperMetadataLookup_LocationMatchingStrategy_EXACTLOCATION = DeveloperMetadataLookup_LocationMatchingStrategy "EXACT_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.
+pattern DeveloperMetadataLookup_LocationMatchingStrategy_INTERSECTINGLOCATION :: DeveloperMetadataLookup_LocationMatchingStrategy
+pattern DeveloperMetadataLookup_LocationMatchingStrategy_INTERSECTINGLOCATION = DeveloperMetadataLookup_LocationMatchingStrategy "INTERSECTING_LOCATION"
+
+{-# COMPLETE
+  DeveloperMetadataLookup_LocationMatchingStrategy_DEVELOPERMETADATALOCATIONMATCHINGSTRATEGYUNSPECIFIED,
+  DeveloperMetadataLookup_LocationMatchingStrategy_EXACTLOCATION,
+  DeveloperMetadataLookup_LocationMatchingStrategy_INTERSECTINGLOCATION,
+  DeveloperMetadataLookup_LocationMatchingStrategy
+  #-}
+
+-- | 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.
+newtype DeveloperMetadataLookup_LocationType = DeveloperMetadataLookup_LocationType {fromDeveloperMetadataLookup_LocationType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value.
+pattern DeveloperMetadataLookup_LocationType_DEVELOPERMETADATALOCATIONTYPEUNSPECIFIED :: DeveloperMetadataLookup_LocationType
+pattern DeveloperMetadataLookup_LocationType_DEVELOPERMETADATALOCATIONTYPEUNSPECIFIED = DeveloperMetadataLookup_LocationType "DEVELOPER_METADATA_LOCATION_TYPE_UNSPECIFIED"
+
+-- | Developer metadata associated on an entire row dimension.
+pattern DeveloperMetadataLookup_LocationType_Row :: DeveloperMetadataLookup_LocationType
+pattern DeveloperMetadataLookup_LocationType_Row = DeveloperMetadataLookup_LocationType "ROW"
+
+-- | Developer metadata associated on an entire column dimension.
+pattern DeveloperMetadataLookup_LocationType_Column :: DeveloperMetadataLookup_LocationType
+pattern DeveloperMetadataLookup_LocationType_Column = DeveloperMetadataLookup_LocationType "COLUMN"
+
+-- | Developer metadata associated on an entire sheet.
+pattern DeveloperMetadataLookup_LocationType_Sheet :: DeveloperMetadataLookup_LocationType
+pattern DeveloperMetadataLookup_LocationType_Sheet = DeveloperMetadataLookup_LocationType "SHEET"
+
+-- | Developer metadata associated on the entire spreadsheet.
+pattern DeveloperMetadataLookup_LocationType_Spreadsheet :: DeveloperMetadataLookup_LocationType
+pattern DeveloperMetadataLookup_LocationType_Spreadsheet = DeveloperMetadataLookup_LocationType "SPREADSHEET"
+
+{-# COMPLETE
+  DeveloperMetadataLookup_LocationType_DEVELOPERMETADATALOCATIONTYPEUNSPECIFIED,
+  DeveloperMetadataLookup_LocationType_Row,
+  DeveloperMetadataLookup_LocationType_Column,
+  DeveloperMetadataLookup_LocationType_Sheet,
+  DeveloperMetadataLookup_LocationType_Spreadsheet,
+  DeveloperMetadataLookup_LocationType
+  #-}
+
+-- | Limits the selected developer metadata to that which has a matching DeveloperMetadata.visibility. If left unspecified, all developer metadata visible to the requesting project is considered.
+newtype DeveloperMetadataLookup_Visibility = DeveloperMetadataLookup_Visibility {fromDeveloperMetadataLookup_Visibility :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value.
+pattern DeveloperMetadataLookup_Visibility_DEVELOPERMETADATAVISIBILITYUNSPECIFIED :: DeveloperMetadataLookup_Visibility
+pattern DeveloperMetadataLookup_Visibility_DEVELOPERMETADATAVISIBILITYUNSPECIFIED = DeveloperMetadataLookup_Visibility "DEVELOPER_METADATA_VISIBILITY_UNSPECIFIED"
+
+-- | Document-visible metadata is accessible from any developer project with access to the document.
+pattern DeveloperMetadataLookup_Visibility_Document :: DeveloperMetadataLookup_Visibility
+pattern DeveloperMetadataLookup_Visibility_Document = DeveloperMetadataLookup_Visibility "DOCUMENT"
+
+-- | Project-visible metadata is only visible to and accessible by the developer project that created the metadata.
+pattern DeveloperMetadataLookup_Visibility_Project :: DeveloperMetadataLookup_Visibility
+pattern DeveloperMetadataLookup_Visibility_Project = DeveloperMetadataLookup_Visibility "PROJECT"
+
+{-# COMPLETE
+  DeveloperMetadataLookup_Visibility_DEVELOPERMETADATAVISIBILITYUNSPECIFIED,
+  DeveloperMetadataLookup_Visibility_Document,
+  DeveloperMetadataLookup_Visibility_Project,
+  DeveloperMetadataLookup_Visibility
+  #-}
+
+-- | The dimension of the span.
+newtype DimensionRange_Dimension = DimensionRange_Dimension {fromDimensionRange_Dimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern DimensionRange_Dimension_DIMENSIONUNSPECIFIED :: DimensionRange_Dimension
+pattern DimensionRange_Dimension_DIMENSIONUNSPECIFIED = DimensionRange_Dimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern DimensionRange_Dimension_Rows :: DimensionRange_Dimension
+pattern DimensionRange_Dimension_Rows = DimensionRange_Dimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern DimensionRange_Dimension_Columns :: DimensionRange_Dimension
+pattern DimensionRange_Dimension_Columns = DimensionRange_Dimension "COLUMNS"
+
+{-# COMPLETE
+  DimensionRange_Dimension_DIMENSIONUNSPECIFIED,
+  DimensionRange_Dimension_Rows,
+  DimensionRange_Dimension_Columns,
+  DimensionRange_Dimension
+  #-}
+
+-- | The type of error.
+newtype ErrorValue_Type = ErrorValue_Type {fromErrorValue_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default error type, do not use this.
+pattern ErrorValue_Type_ERRORTYPEUNSPECIFIED :: ErrorValue_Type
+pattern ErrorValue_Type_ERRORTYPEUNSPECIFIED = ErrorValue_Type "ERROR_TYPE_UNSPECIFIED"
+
+-- | Corresponds to the @#ERROR!@ error.
+pattern ErrorValue_Type_Error' :: ErrorValue_Type
+pattern ErrorValue_Type_Error' = ErrorValue_Type "ERROR"
+
+-- | Corresponds to the @#NULL!@ error.
+pattern ErrorValue_Type_NULLVALUE :: ErrorValue_Type
+pattern ErrorValue_Type_NULLVALUE = ErrorValue_Type "NULL_VALUE"
+
+-- | Corresponds to the @#DIV\/0@ error.
+pattern ErrorValue_Type_DIVIDEBYZERO :: ErrorValue_Type
+pattern ErrorValue_Type_DIVIDEBYZERO = ErrorValue_Type "DIVIDE_BY_ZERO"
+
+-- | Corresponds to the @#VALUE!@ error.
+pattern ErrorValue_Type_Value :: ErrorValue_Type
+pattern ErrorValue_Type_Value = ErrorValue_Type "VALUE"
+
+-- | Corresponds to the @#REF!@ error.
+pattern ErrorValue_Type_Ref :: ErrorValue_Type
+pattern ErrorValue_Type_Ref = ErrorValue_Type "REF"
+
+-- | Corresponds to the @#NAME?@ error.
+pattern ErrorValue_Type_Name :: ErrorValue_Type
+pattern ErrorValue_Type_Name = ErrorValue_Type "NAME"
+
+-- | Corresponds to the @#NUM!@ error.
+pattern ErrorValue_Type_Num :: ErrorValue_Type
+pattern ErrorValue_Type_Num = ErrorValue_Type "NUM"
+
+-- | Corresponds to the @#N\/A@ error.
+pattern ErrorValue_Type_NA :: ErrorValue_Type
+pattern ErrorValue_Type_NA = ErrorValue_Type "N_A"
+
+-- | Corresponds to the @Loading...@ state.
+pattern ErrorValue_Type_Loading :: ErrorValue_Type
+pattern ErrorValue_Type_Loading = ErrorValue_Type "LOADING"
+
+{-# COMPLETE
+  ErrorValue_Type_ERRORTYPEUNSPECIFIED,
+  ErrorValue_Type_Error',
+  ErrorValue_Type_NULLVALUE,
+  ErrorValue_Type_DIVIDEBYZERO,
+  ErrorValue_Type_Value,
+  ErrorValue_Type_Ref,
+  ErrorValue_Type_Name,
+  ErrorValue_Type_Num,
+  ErrorValue_Type_NA,
+  ErrorValue_Type_Loading,
+  ErrorValue_Type
+  #-}
+
+-- | The position of the chart legend.
+newtype HistogramChartSpec_LegendPosition = HistogramChartSpec_LegendPosition {fromHistogramChartSpec_LegendPosition :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern HistogramChartSpec_LegendPosition_HISTOGRAMCHARTLEGENDPOSITIONUNSPECIFIED :: HistogramChartSpec_LegendPosition
+pattern HistogramChartSpec_LegendPosition_HISTOGRAMCHARTLEGENDPOSITIONUNSPECIFIED = HistogramChartSpec_LegendPosition "HISTOGRAM_CHART_LEGEND_POSITION_UNSPECIFIED"
+
+-- | The legend is rendered on the bottom of the chart.
+pattern HistogramChartSpec_LegendPosition_BOTTOMLEGEND :: HistogramChartSpec_LegendPosition
+pattern HistogramChartSpec_LegendPosition_BOTTOMLEGEND = HistogramChartSpec_LegendPosition "BOTTOM_LEGEND"
+
+-- | The legend is rendered on the left of the chart.
+pattern HistogramChartSpec_LegendPosition_LEFTLEGEND :: HistogramChartSpec_LegendPosition
+pattern HistogramChartSpec_LegendPosition_LEFTLEGEND = HistogramChartSpec_LegendPosition "LEFT_LEGEND"
+
+-- | The legend is rendered on the right of the chart.
+pattern HistogramChartSpec_LegendPosition_RIGHTLEGEND :: HistogramChartSpec_LegendPosition
+pattern HistogramChartSpec_LegendPosition_RIGHTLEGEND = HistogramChartSpec_LegendPosition "RIGHT_LEGEND"
+
+-- | The legend is rendered on the top of the chart.
+pattern HistogramChartSpec_LegendPosition_TOPLEGEND :: HistogramChartSpec_LegendPosition
+pattern HistogramChartSpec_LegendPosition_TOPLEGEND = HistogramChartSpec_LegendPosition "TOP_LEGEND"
+
+-- | No legend is rendered.
+pattern HistogramChartSpec_LegendPosition_NOLEGEND :: HistogramChartSpec_LegendPosition
+pattern HistogramChartSpec_LegendPosition_NOLEGEND = HistogramChartSpec_LegendPosition "NO_LEGEND"
+
+-- | The legend is rendered inside the chart area.
+pattern HistogramChartSpec_LegendPosition_INSIDELEGEND :: HistogramChartSpec_LegendPosition
+pattern HistogramChartSpec_LegendPosition_INSIDELEGEND = HistogramChartSpec_LegendPosition "INSIDE_LEGEND"
+
+{-# COMPLETE
+  HistogramChartSpec_LegendPosition_HISTOGRAMCHARTLEGENDPOSITIONUNSPECIFIED,
+  HistogramChartSpec_LegendPosition_BOTTOMLEGEND,
+  HistogramChartSpec_LegendPosition_LEFTLEGEND,
+  HistogramChartSpec_LegendPosition_RIGHTLEGEND,
+  HistogramChartSpec_LegendPosition_TOPLEGEND,
+  HistogramChartSpec_LegendPosition_NOLEGEND,
+  HistogramChartSpec_LegendPosition_INSIDELEGEND,
+  HistogramChartSpec_LegendPosition
+  #-}
+
+-- | 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.
+newtype InsertRangeRequest_ShiftDimension = InsertRangeRequest_ShiftDimension {fromInsertRangeRequest_ShiftDimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern InsertRangeRequest_ShiftDimension_DIMENSIONUNSPECIFIED :: InsertRangeRequest_ShiftDimension
+pattern InsertRangeRequest_ShiftDimension_DIMENSIONUNSPECIFIED = InsertRangeRequest_ShiftDimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern InsertRangeRequest_ShiftDimension_Rows :: InsertRangeRequest_ShiftDimension
+pattern InsertRangeRequest_ShiftDimension_Rows = InsertRangeRequest_ShiftDimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern InsertRangeRequest_ShiftDimension_Columns :: InsertRangeRequest_ShiftDimension
+pattern InsertRangeRequest_ShiftDimension_Columns = InsertRangeRequest_ShiftDimension "COLUMNS"
+
+{-# COMPLETE
+  InsertRangeRequest_ShiftDimension_DIMENSIONUNSPECIFIED,
+  InsertRangeRequest_ShiftDimension_Rows,
+  InsertRangeRequest_ShiftDimension_Columns,
+  InsertRangeRequest_ShiftDimension
+  #-}
+
+-- | How the value should be interpreted.
+newtype InterpolationPoint_Type = InterpolationPoint_Type {fromInterpolationPoint_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern InterpolationPoint_Type_INTERPOLATIONPOINTTYPEUNSPECIFIED :: InterpolationPoint_Type
+pattern InterpolationPoint_Type_INTERPOLATIONPOINTTYPEUNSPECIFIED = InterpolationPoint_Type "INTERPOLATION_POINT_TYPE_UNSPECIFIED"
+
+-- | The interpolation point uses the minimum value in the cells over the range of the conditional format.
+pattern InterpolationPoint_Type_Min :: InterpolationPoint_Type
+pattern InterpolationPoint_Type_Min = InterpolationPoint_Type "MIN"
+
+-- | The interpolation point uses the maximum value in the cells over the range of the conditional format.
+pattern InterpolationPoint_Type_Max :: InterpolationPoint_Type
+pattern InterpolationPoint_Type_Max = InterpolationPoint_Type "MAX"
+
+-- | The interpolation point uses exactly the value in InterpolationPoint.value.
+pattern InterpolationPoint_Type_Number :: InterpolationPoint_Type
+pattern InterpolationPoint_Type_Number = InterpolationPoint_Type "NUMBER"
+
+-- | 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).
+pattern InterpolationPoint_Type_Percent :: InterpolationPoint_Type
+pattern InterpolationPoint_Type_Percent = InterpolationPoint_Type "PERCENT"
+
+-- | 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).
+pattern InterpolationPoint_Type_Percentile :: InterpolationPoint_Type
+pattern InterpolationPoint_Type_Percentile = InterpolationPoint_Type "PERCENTILE"
+
+{-# COMPLETE
+  InterpolationPoint_Type_INTERPOLATIONPOINTTYPEUNSPECIFIED,
+  InterpolationPoint_Type_Min,
+  InterpolationPoint_Type_Max,
+  InterpolationPoint_Type_Number,
+  InterpolationPoint_Type_Percent,
+  InterpolationPoint_Type_Percentile,
+  InterpolationPoint_Type
+  #-}
+
+-- | The dash type of the line.
+newtype LineStyle_Type = LineStyle_Type {fromLineStyle_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern LineStyle_Type_LINEDASHTYPEUNSPECIFIED :: LineStyle_Type
+pattern LineStyle_Type_LINEDASHTYPEUNSPECIFIED = LineStyle_Type "LINE_DASH_TYPE_UNSPECIFIED"
+
+-- | No dash type, which is equivalent to a non-visible line.
+pattern LineStyle_Type_Invisible :: LineStyle_Type
+pattern LineStyle_Type_Invisible = LineStyle_Type "INVISIBLE"
+
+-- | A custom dash for a line. Modifying the exact custom dash style is currently unsupported.
+pattern LineStyle_Type_Custom :: LineStyle_Type
+pattern LineStyle_Type_Custom = LineStyle_Type "CUSTOM"
+
+-- | A solid line.
+pattern LineStyle_Type_Solid :: LineStyle_Type
+pattern LineStyle_Type_Solid = LineStyle_Type "SOLID"
+
+-- | A dotted line.
+pattern LineStyle_Type_Dotted :: LineStyle_Type
+pattern LineStyle_Type_Dotted = LineStyle_Type "DOTTED"
+
+-- | A dashed line where the dashes have \"medium\" length.
+pattern LineStyle_Type_MEDIUMDASHED :: LineStyle_Type
+pattern LineStyle_Type_MEDIUMDASHED = LineStyle_Type "MEDIUM_DASHED"
+
+-- | A line that alternates between a \"medium\" dash and a dot.
+pattern LineStyle_Type_MEDIUMDASHEDDOTTED :: LineStyle_Type
+pattern LineStyle_Type_MEDIUMDASHEDDOTTED = LineStyle_Type "MEDIUM_DASHED_DOTTED"
+
+-- | A dashed line where the dashes have \"long\" length.
+pattern LineStyle_Type_LONGDASHED :: LineStyle_Type
+pattern LineStyle_Type_LONGDASHED = LineStyle_Type "LONG_DASHED"
+
+-- | A line that alternates between a \"long\" dash and a dot.
+pattern LineStyle_Type_LONGDASHEDDOTTED :: LineStyle_Type
+pattern LineStyle_Type_LONGDASHEDDOTTED = LineStyle_Type "LONG_DASHED_DOTTED"
+
+{-# COMPLETE
+  LineStyle_Type_LINEDASHTYPEUNSPECIFIED,
+  LineStyle_Type_Invisible,
+  LineStyle_Type_Custom,
+  LineStyle_Type_Solid,
+  LineStyle_Type_Dotted,
+  LineStyle_Type_MEDIUMDASHED,
+  LineStyle_Type_MEDIUMDASHEDDOTTED,
+  LineStyle_Type_LONGDASHED,
+  LineStyle_Type_LONGDASHEDDOTTED,
+  LineStyle_Type
+  #-}
+
+-- | How the cells should be merged.
+newtype MergeCellsRequest_MergeType = MergeCellsRequest_MergeType {fromMergeCellsRequest_MergeType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Create a single merge from the range
+pattern MergeCellsRequest_MergeType_MERGEALL :: MergeCellsRequest_MergeType
+pattern MergeCellsRequest_MergeType_MERGEALL = MergeCellsRequest_MergeType "MERGE_ALL"
+
+-- | Create a merge for each column in the range
+pattern MergeCellsRequest_MergeType_MERGECOLUMNS :: MergeCellsRequest_MergeType
+pattern MergeCellsRequest_MergeType_MERGECOLUMNS = MergeCellsRequest_MergeType "MERGE_COLUMNS"
+
+-- | Create a merge for each row in the range
+pattern MergeCellsRequest_MergeType_MERGEROWS :: MergeCellsRequest_MergeType
+pattern MergeCellsRequest_MergeType_MERGEROWS = MergeCellsRequest_MergeType "MERGE_ROWS"
+
+{-# COMPLETE
+  MergeCellsRequest_MergeType_MERGEALL,
+  MergeCellsRequest_MergeType_MERGECOLUMNS,
+  MergeCellsRequest_MergeType_MERGEROWS,
+  MergeCellsRequest_MergeType
+  #-}
+
+-- | The type of the number format. When writing, this field must be set.
+newtype NumberFormat_Type = NumberFormat_Type {fromNumberFormat_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The number format is not specified and is based on the contents of the cell. Do not explicitly use this.
+pattern NumberFormat_Type_NUMBERFORMATTYPEUNSPECIFIED :: NumberFormat_Type
+pattern NumberFormat_Type_NUMBERFORMATTYPEUNSPECIFIED = NumberFormat_Type "NUMBER_FORMAT_TYPE_UNSPECIFIED"
+
+-- | Text formatting, e.g @1000.12@
+pattern NumberFormat_Type_Text :: NumberFormat_Type
+pattern NumberFormat_Type_Text = NumberFormat_Type "TEXT"
+
+-- | Number formatting, e.g, @1,000.12@
+pattern NumberFormat_Type_Number :: NumberFormat_Type
+pattern NumberFormat_Type_Number = NumberFormat_Type "NUMBER"
+
+-- | Percent formatting, e.g @10.12%@
+pattern NumberFormat_Type_Percent :: NumberFormat_Type
+pattern NumberFormat_Type_Percent = NumberFormat_Type "PERCENT"
+
+-- | Currency formatting, e.g @$1,000.12@
+pattern NumberFormat_Type_Currency :: NumberFormat_Type
+pattern NumberFormat_Type_Currency = NumberFormat_Type "CURRENCY"
+
+-- | Date formatting, e.g @9\/26\/2008@
+pattern NumberFormat_Type_Date :: NumberFormat_Type
+pattern NumberFormat_Type_Date = NumberFormat_Type "DATE"
+
+-- | Time formatting, e.g @3:59:00 PM@
+pattern NumberFormat_Type_Time :: NumberFormat_Type
+pattern NumberFormat_Type_Time = NumberFormat_Type "TIME"
+
+-- | Date+Time formatting, e.g @9\/26\/08 15:59:00@
+pattern NumberFormat_Type_DATETIME :: NumberFormat_Type
+pattern NumberFormat_Type_DATETIME = NumberFormat_Type "DATE_TIME"
+
+-- | Scientific number formatting, e.g @1.01E+03@
+pattern NumberFormat_Type_Scientific :: NumberFormat_Type
+pattern NumberFormat_Type_Scientific = NumberFormat_Type "SCIENTIFIC"
+
+{-# COMPLETE
+  NumberFormat_Type_NUMBERFORMATTYPEUNSPECIFIED,
+  NumberFormat_Type_Text,
+  NumberFormat_Type_Number,
+  NumberFormat_Type_Percent,
+  NumberFormat_Type_Currency,
+  NumberFormat_Type_Date,
+  NumberFormat_Type_Time,
+  NumberFormat_Type_DATETIME,
+  NumberFormat_Type_Scientific,
+  NumberFormat_Type
+  #-}
+
+-- | The size of the org chart nodes.
+newtype OrgChartSpec_NodeSize = OrgChartSpec_NodeSize {fromOrgChartSpec_NodeSize :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern OrgChartSpec_NodeSize_ORGCHARTLABELSIZEUNSPECIFIED :: OrgChartSpec_NodeSize
+pattern OrgChartSpec_NodeSize_ORGCHARTLABELSIZEUNSPECIFIED = OrgChartSpec_NodeSize "ORG_CHART_LABEL_SIZE_UNSPECIFIED"
+
+-- | The small org chart node size.
+pattern OrgChartSpec_NodeSize_Small :: OrgChartSpec_NodeSize
+pattern OrgChartSpec_NodeSize_Small = OrgChartSpec_NodeSize "SMALL"
+
+-- | The medium org chart node size.
+pattern OrgChartSpec_NodeSize_Medium :: OrgChartSpec_NodeSize
+pattern OrgChartSpec_NodeSize_Medium = OrgChartSpec_NodeSize "MEDIUM"
+
+-- | The large org chart node size.
+pattern OrgChartSpec_NodeSize_Large :: OrgChartSpec_NodeSize
+pattern OrgChartSpec_NodeSize_Large = OrgChartSpec_NodeSize "LARGE"
+
+{-# COMPLETE
+  OrgChartSpec_NodeSize_ORGCHARTLABELSIZEUNSPECIFIED,
+  OrgChartSpec_NodeSize_Small,
+  OrgChartSpec_NodeSize_Medium,
+  OrgChartSpec_NodeSize_Large,
+  OrgChartSpec_NodeSize
+  #-}
+
+-- | How the data should be pasted.
+newtype PasteDataRequest_Type = PasteDataRequest_Type {fromPasteDataRequest_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Paste values, formulas, formats, and merges.
+pattern PasteDataRequest_Type_PASTENORMAL :: PasteDataRequest_Type
+pattern PasteDataRequest_Type_PASTENORMAL = PasteDataRequest_Type "PASTE_NORMAL"
+
+-- | Paste the values ONLY without formats, formulas, or merges.
+pattern PasteDataRequest_Type_PASTEVALUES :: PasteDataRequest_Type
+pattern PasteDataRequest_Type_PASTEVALUES = PasteDataRequest_Type "PASTE_VALUES"
+
+-- | Paste the format and data validation only.
+pattern PasteDataRequest_Type_PASTEFORMAT :: PasteDataRequest_Type
+pattern PasteDataRequest_Type_PASTEFORMAT = PasteDataRequest_Type "PASTE_FORMAT"
+
+-- | Like @PASTE_NORMAL@ but without borders.
+pattern PasteDataRequest_Type_PASTENOBORDERS :: PasteDataRequest_Type
+pattern PasteDataRequest_Type_PASTENOBORDERS = PasteDataRequest_Type "PASTE_NO_BORDERS"
+
+-- | Paste the formulas only.
+pattern PasteDataRequest_Type_PASTEFORMULA :: PasteDataRequest_Type
+pattern PasteDataRequest_Type_PASTEFORMULA = PasteDataRequest_Type "PASTE_FORMULA"
+
+-- | Paste the data validation only.
+pattern PasteDataRequest_Type_PASTEDATAVALIDATION :: PasteDataRequest_Type
+pattern PasteDataRequest_Type_PASTEDATAVALIDATION = PasteDataRequest_Type "PASTE_DATA_VALIDATION"
+
+-- | Paste the conditional formatting rules only.
+pattern PasteDataRequest_Type_PASTECONDITIONALFORMATTING :: PasteDataRequest_Type
+pattern PasteDataRequest_Type_PASTECONDITIONALFORMATTING = PasteDataRequest_Type "PASTE_CONDITIONAL_FORMATTING"
+
+{-# COMPLETE
+  PasteDataRequest_Type_PASTENORMAL,
+  PasteDataRequest_Type_PASTEVALUES,
+  PasteDataRequest_Type_PASTEFORMAT,
+  PasteDataRequest_Type_PASTENOBORDERS,
+  PasteDataRequest_Type_PASTEFORMULA,
+  PasteDataRequest_Type_PASTEDATAVALIDATION,
+  PasteDataRequest_Type_PASTECONDITIONALFORMATTING,
+  PasteDataRequest_Type
+  #-}
+
+-- | Where the legend of the pie chart should be drawn.
+newtype PieChartSpec_LegendPosition = PieChartSpec_LegendPosition {fromPieChartSpec_LegendPosition :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern PieChartSpec_LegendPosition_PIECHARTLEGENDPOSITIONUNSPECIFIED :: PieChartSpec_LegendPosition
+pattern PieChartSpec_LegendPosition_PIECHARTLEGENDPOSITIONUNSPECIFIED = PieChartSpec_LegendPosition "PIE_CHART_LEGEND_POSITION_UNSPECIFIED"
+
+-- | The legend is rendered on the bottom of the chart.
+pattern PieChartSpec_LegendPosition_BOTTOMLEGEND :: PieChartSpec_LegendPosition
+pattern PieChartSpec_LegendPosition_BOTTOMLEGEND = PieChartSpec_LegendPosition "BOTTOM_LEGEND"
+
+-- | The legend is rendered on the left of the chart.
+pattern PieChartSpec_LegendPosition_LEFTLEGEND :: PieChartSpec_LegendPosition
+pattern PieChartSpec_LegendPosition_LEFTLEGEND = PieChartSpec_LegendPosition "LEFT_LEGEND"
+
+-- | The legend is rendered on the right of the chart.
+pattern PieChartSpec_LegendPosition_RIGHTLEGEND :: PieChartSpec_LegendPosition
+pattern PieChartSpec_LegendPosition_RIGHTLEGEND = PieChartSpec_LegendPosition "RIGHT_LEGEND"
+
+-- | The legend is rendered on the top of the chart.
+pattern PieChartSpec_LegendPosition_TOPLEGEND :: PieChartSpec_LegendPosition
+pattern PieChartSpec_LegendPosition_TOPLEGEND = PieChartSpec_LegendPosition "TOP_LEGEND"
+
+-- | No legend is rendered.
+pattern PieChartSpec_LegendPosition_NOLEGEND :: PieChartSpec_LegendPosition
+pattern PieChartSpec_LegendPosition_NOLEGEND = PieChartSpec_LegendPosition "NO_LEGEND"
+
+-- | Each pie slice has a label attached to it.
+pattern PieChartSpec_LegendPosition_LABELEDLEGEND :: PieChartSpec_LegendPosition
+pattern PieChartSpec_LegendPosition_LABELEDLEGEND = PieChartSpec_LegendPosition "LABELED_LEGEND"
+
+{-# COMPLETE
+  PieChartSpec_LegendPosition_PIECHARTLEGENDPOSITIONUNSPECIFIED,
+  PieChartSpec_LegendPosition_BOTTOMLEGEND,
+  PieChartSpec_LegendPosition_LEFTLEGEND,
+  PieChartSpec_LegendPosition_RIGHTLEGEND,
+  PieChartSpec_LegendPosition_TOPLEGEND,
+  PieChartSpec_LegendPosition_NOLEGEND,
+  PieChartSpec_LegendPosition_LABELEDLEGEND,
+  PieChartSpec_LegendPosition
+  #-}
+
+-- | The order the values in this group should be sorted.
+newtype PivotGroup_SortOrder = PivotGroup_SortOrder {fromPivotGroup_SortOrder :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use this.
+pattern PivotGroup_SortOrder_SORTORDERUNSPECIFIED :: PivotGroup_SortOrder
+pattern PivotGroup_SortOrder_SORTORDERUNSPECIFIED = PivotGroup_SortOrder "SORT_ORDER_UNSPECIFIED"
+
+-- | Sort ascending.
+pattern PivotGroup_SortOrder_Ascending :: PivotGroup_SortOrder
+pattern PivotGroup_SortOrder_Ascending = PivotGroup_SortOrder "ASCENDING"
+
+-- | Sort descending.
+pattern PivotGroup_SortOrder_Descending :: PivotGroup_SortOrder
+pattern PivotGroup_SortOrder_Descending = PivotGroup_SortOrder "DESCENDING"
+
+{-# COMPLETE
+  PivotGroup_SortOrder_SORTORDERUNSPECIFIED,
+  PivotGroup_SortOrder_Ascending,
+  PivotGroup_SortOrder_Descending,
+  PivotGroup_SortOrder
+  #-}
+
+-- | Whether values should be listed horizontally (as columns) or vertically (as rows).
+newtype PivotTable_ValueLayout = PivotTable_ValueLayout {fromPivotTable_ValueLayout :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Values are laid out horizontally (as columns).
+pattern PivotTable_ValueLayout_Horizontal :: PivotTable_ValueLayout
+pattern PivotTable_ValueLayout_Horizontal = PivotTable_ValueLayout "HORIZONTAL"
+
+-- | Values are laid out vertically (as rows).
+pattern PivotTable_ValueLayout_Vertical :: PivotTable_ValueLayout
+pattern PivotTable_ValueLayout_Vertical = PivotTable_ValueLayout "VERTICAL"
+
+{-# COMPLETE
+  PivotTable_ValueLayout_Horizontal,
+  PivotTable_ValueLayout_Vertical,
+  PivotTable_ValueLayout
+  #-}
+
+-- | 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 editor, this is referred to as \"Show As\" in the value section of a pivot table.
+newtype PivotValue_CalculatedDisplayType = PivotValue_CalculatedDisplayType {fromPivotValue_CalculatedDisplayType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern PivotValue_CalculatedDisplayType_PIVOTVALUECALCULATEDDISPLAYTYPEUNSPECIFIED :: PivotValue_CalculatedDisplayType
+pattern PivotValue_CalculatedDisplayType_PIVOTVALUECALCULATEDDISPLAYTYPEUNSPECIFIED = PivotValue_CalculatedDisplayType "PIVOT_VALUE_CALCULATED_DISPLAY_TYPE_UNSPECIFIED"
+
+-- | Shows the pivot values as percentage of the row total values.
+pattern PivotValue_CalculatedDisplayType_PERCENTOFROWTOTAL :: PivotValue_CalculatedDisplayType
+pattern PivotValue_CalculatedDisplayType_PERCENTOFROWTOTAL = PivotValue_CalculatedDisplayType "PERCENT_OF_ROW_TOTAL"
+
+-- | Shows the pivot values as percentage of the column total values.
+pattern PivotValue_CalculatedDisplayType_PERCENTOFCOLUMNTOTAL :: PivotValue_CalculatedDisplayType
+pattern PivotValue_CalculatedDisplayType_PERCENTOFCOLUMNTOTAL = PivotValue_CalculatedDisplayType "PERCENT_OF_COLUMN_TOTAL"
+
+-- | Shows the pivot values as percentage of the grand total values.
+pattern PivotValue_CalculatedDisplayType_PERCENTOFGRANDTOTAL :: PivotValue_CalculatedDisplayType
+pattern PivotValue_CalculatedDisplayType_PERCENTOFGRANDTOTAL = PivotValue_CalculatedDisplayType "PERCENT_OF_GRAND_TOTAL"
+
+{-# COMPLETE
+  PivotValue_CalculatedDisplayType_PIVOTVALUECALCULATEDDISPLAYTYPEUNSPECIFIED,
+  PivotValue_CalculatedDisplayType_PERCENTOFROWTOTAL,
+  PivotValue_CalculatedDisplayType_PERCENTOFCOLUMNTOTAL,
+  PivotValue_CalculatedDisplayType_PERCENTOFGRANDTOTAL,
+  PivotValue_CalculatedDisplayType
+  #-}
+
+-- | 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.
+newtype PivotValue_SummarizeFunction = PivotValue_SummarizeFunction {fromPivotValue_SummarizeFunction :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default, do not use.
+pattern PivotValue_SummarizeFunction_PIVOTSTANDARDVALUEFUNCTIONUNSPECIFIED :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_PIVOTSTANDARDVALUEFUNCTIONUNSPECIFIED = PivotValue_SummarizeFunction "PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED"
+
+-- | Corresponds to the @SUM@ function.
+pattern PivotValue_SummarizeFunction_Sum :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Sum = PivotValue_SummarizeFunction "SUM"
+
+-- | Corresponds to the @COUNTA@ function.
+pattern PivotValue_SummarizeFunction_Counta :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Counta = PivotValue_SummarizeFunction "COUNTA"
+
+-- | Corresponds to the @COUNT@ function.
+pattern PivotValue_SummarizeFunction_Count :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Count = PivotValue_SummarizeFunction "COUNT"
+
+-- | Corresponds to the @COUNTUNIQUE@ function.
+pattern PivotValue_SummarizeFunction_Countunique :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Countunique = PivotValue_SummarizeFunction "COUNTUNIQUE"
+
+-- | Corresponds to the @AVERAGE@ function.
+pattern PivotValue_SummarizeFunction_Average :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Average = PivotValue_SummarizeFunction "AVERAGE"
+
+-- | Corresponds to the @MAX@ function.
+pattern PivotValue_SummarizeFunction_Max :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Max = PivotValue_SummarizeFunction "MAX"
+
+-- | Corresponds to the @MIN@ function.
+pattern PivotValue_SummarizeFunction_Min :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Min = PivotValue_SummarizeFunction "MIN"
+
+-- | Corresponds to the @MEDIAN@ function.
+pattern PivotValue_SummarizeFunction_Median :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Median = PivotValue_SummarizeFunction "MEDIAN"
+
+-- | Corresponds to the @PRODUCT@ function.
+pattern PivotValue_SummarizeFunction_Product :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Product = PivotValue_SummarizeFunction "PRODUCT"
+
+-- | Corresponds to the @STDEV@ function.
+pattern PivotValue_SummarizeFunction_Stdev :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Stdev = PivotValue_SummarizeFunction "STDEV"
+
+-- | Corresponds to the @STDEVP@ function.
+pattern PivotValue_SummarizeFunction_Stdevp :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Stdevp = PivotValue_SummarizeFunction "STDEVP"
+
+-- | Corresponds to the @VAR@ function.
+pattern PivotValue_SummarizeFunction_Var :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Var = PivotValue_SummarizeFunction "VAR"
+
+-- | Corresponds to the @VARP@ function.
+pattern PivotValue_SummarizeFunction_Varp :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Varp = PivotValue_SummarizeFunction "VARP"
+
+-- | Indicates the formula should be used as-is. Only valid if PivotValue.formula was set.
+pattern PivotValue_SummarizeFunction_Custom :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_Custom = PivotValue_SummarizeFunction "CUSTOM"
+
+-- | Indicates that the value is already summarized, and the summarization function is not explicitly specified. Used for Looker data source pivot tables where the value is already summarized.
+pattern PivotValue_SummarizeFunction_None :: PivotValue_SummarizeFunction
+pattern PivotValue_SummarizeFunction_None = PivotValue_SummarizeFunction "NONE"
+
+{-# COMPLETE
+  PivotValue_SummarizeFunction_PIVOTSTANDARDVALUEFUNCTIONUNSPECIFIED,
+  PivotValue_SummarizeFunction_Sum,
+  PivotValue_SummarizeFunction_Counta,
+  PivotValue_SummarizeFunction_Count,
+  PivotValue_SummarizeFunction_Countunique,
+  PivotValue_SummarizeFunction_Average,
+  PivotValue_SummarizeFunction_Max,
+  PivotValue_SummarizeFunction_Min,
+  PivotValue_SummarizeFunction_Median,
+  PivotValue_SummarizeFunction_Product,
+  PivotValue_SummarizeFunction_Stdev,
+  PivotValue_SummarizeFunction_Stdevp,
+  PivotValue_SummarizeFunction_Var,
+  PivotValue_SummarizeFunction_Varp,
+  PivotValue_SummarizeFunction_Custom,
+  PivotValue_SummarizeFunction_None,
+  PivotValue_SummarizeFunction
+  #-}
+
+-- | The point shape. If empty or unspecified, a default shape is used.
+newtype PointStyle_Shape = PointStyle_Shape {fromPointStyle_Shape :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value.
+pattern PointStyle_Shape_POINTSHAPEUNSPECIFIED :: PointStyle_Shape
+pattern PointStyle_Shape_POINTSHAPEUNSPECIFIED = PointStyle_Shape "POINT_SHAPE_UNSPECIFIED"
+
+-- | A circle shape.
+pattern PointStyle_Shape_Circle :: PointStyle_Shape
+pattern PointStyle_Shape_Circle = PointStyle_Shape "CIRCLE"
+
+-- | A diamond shape.
+pattern PointStyle_Shape_Diamond :: PointStyle_Shape
+pattern PointStyle_Shape_Diamond = PointStyle_Shape "DIAMOND"
+
+-- | A hexagon shape.
+pattern PointStyle_Shape_Hexagon :: PointStyle_Shape
+pattern PointStyle_Shape_Hexagon = PointStyle_Shape "HEXAGON"
+
+-- | A pentagon shape.
+pattern PointStyle_Shape_Pentagon :: PointStyle_Shape
+pattern PointStyle_Shape_Pentagon = PointStyle_Shape "PENTAGON"
+
+-- | A square shape.
+pattern PointStyle_Shape_Square :: PointStyle_Shape
+pattern PointStyle_Shape_Square = PointStyle_Shape "SQUARE"
+
+-- | A star shape.
+pattern PointStyle_Shape_Star :: PointStyle_Shape
+pattern PointStyle_Shape_Star = PointStyle_Shape "STAR"
+
+-- | A triangle shape.
+pattern PointStyle_Shape_Triangle :: PointStyle_Shape
+pattern PointStyle_Shape_Triangle = PointStyle_Shape "TRIANGLE"
+
+-- | An x-mark shape.
+pattern PointStyle_Shape_XMARK :: PointStyle_Shape
+pattern PointStyle_Shape_XMARK = PointStyle_Shape "X_MARK"
+
+{-# COMPLETE
+  PointStyle_Shape_POINTSHAPEUNSPECIFIED,
+  PointStyle_Shape_Circle,
+  PointStyle_Shape_Diamond,
+  PointStyle_Shape_Hexagon,
+  PointStyle_Shape_Pentagon,
+  PointStyle_Shape_Square,
+  PointStyle_Shape_Star,
+  PointStyle_Shape_Triangle,
+  PointStyle_Shape_XMARK,
+  PointStyle_Shape
+  #-}
+
+-- | The error code.
+newtype RefreshCancellationStatus_ErrorCode = RefreshCancellationStatus_ErrorCode {fromRefreshCancellationStatus_ErrorCode :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern RefreshCancellationStatus_ErrorCode_REFRESHCANCELLATIONERRORCODEUNSPECIFIED :: RefreshCancellationStatus_ErrorCode
+pattern RefreshCancellationStatus_ErrorCode_REFRESHCANCELLATIONERRORCODEUNSPECIFIED = RefreshCancellationStatus_ErrorCode "REFRESH_CANCELLATION_ERROR_CODE_UNSPECIFIED"
+
+-- | Execution to be cancelled not found in the query engine or in Sheets.
+pattern RefreshCancellationStatus_ErrorCode_EXECUTIONNOTFOUND :: RefreshCancellationStatus_ErrorCode
+pattern RefreshCancellationStatus_ErrorCode_EXECUTIONNOTFOUND = RefreshCancellationStatus_ErrorCode "EXECUTION_NOT_FOUND"
+
+-- | The user does not have permission to cancel the query.
+pattern RefreshCancellationStatus_ErrorCode_CANCELPERMISSIONDENIED :: RefreshCancellationStatus_ErrorCode
+pattern RefreshCancellationStatus_ErrorCode_CANCELPERMISSIONDENIED = RefreshCancellationStatus_ErrorCode "CANCEL_PERMISSION_DENIED"
+
+-- | The query execution has already completed and thus could not be cancelled.
+pattern RefreshCancellationStatus_ErrorCode_QUERYEXECUTIONCOMPLETED :: RefreshCancellationStatus_ErrorCode
+pattern RefreshCancellationStatus_ErrorCode_QUERYEXECUTIONCOMPLETED = RefreshCancellationStatus_ErrorCode "QUERY_EXECUTION_COMPLETED"
+
+-- | There is already another cancellation in process.
+pattern RefreshCancellationStatus_ErrorCode_CONCURRENTCANCELLATION :: RefreshCancellationStatus_ErrorCode
+pattern RefreshCancellationStatus_ErrorCode_CONCURRENTCANCELLATION = RefreshCancellationStatus_ErrorCode "CONCURRENT_CANCELLATION"
+
+-- | All other errors.
+pattern RefreshCancellationStatus_ErrorCode_CANCELOTHERERROR :: RefreshCancellationStatus_ErrorCode
+pattern RefreshCancellationStatus_ErrorCode_CANCELOTHERERROR = RefreshCancellationStatus_ErrorCode "CANCEL_OTHER_ERROR"
+
+{-# COMPLETE
+  RefreshCancellationStatus_ErrorCode_REFRESHCANCELLATIONERRORCODEUNSPECIFIED,
+  RefreshCancellationStatus_ErrorCode_EXECUTIONNOTFOUND,
+  RefreshCancellationStatus_ErrorCode_CANCELPERMISSIONDENIED,
+  RefreshCancellationStatus_ErrorCode_QUERYEXECUTIONCOMPLETED,
+  RefreshCancellationStatus_ErrorCode_CONCURRENTCANCELLATION,
+  RefreshCancellationStatus_ErrorCode_CANCELOTHERERROR,
+  RefreshCancellationStatus_ErrorCode
+  #-}
+
+-- | The state of a call to cancel a refresh in Sheets.
+newtype RefreshCancellationStatus_State = RefreshCancellationStatus_State {fromRefreshCancellationStatus_State :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern RefreshCancellationStatus_State_REFRESHCANCELLATIONSTATEUNSPECIFIED :: RefreshCancellationStatus_State
+pattern RefreshCancellationStatus_State_REFRESHCANCELLATIONSTATEUNSPECIFIED = RefreshCancellationStatus_State "REFRESH_CANCELLATION_STATE_UNSPECIFIED"
+
+-- | The API call to Sheets to cancel a refresh has succeeded. This does not mean that the cancel happened successfully, but that the call has been made successfully.
+pattern RefreshCancellationStatus_State_CANCELSUCCEEDED :: RefreshCancellationStatus_State
+pattern RefreshCancellationStatus_State_CANCELSUCCEEDED = RefreshCancellationStatus_State "CANCEL_SUCCEEDED"
+
+-- | The API call to Sheets to cancel a refresh has failed.
+pattern RefreshCancellationStatus_State_CANCELFAILED :: RefreshCancellationStatus_State
+pattern RefreshCancellationStatus_State_CANCELFAILED = RefreshCancellationStatus_State "CANCEL_FAILED"
+
+{-# COMPLETE
+  RefreshCancellationStatus_State_REFRESHCANCELLATIONSTATEUNSPECIFIED,
+  RefreshCancellationStatus_State_CANCELSUCCEEDED,
+  RefreshCancellationStatus_State_CANCELFAILED,
+  RefreshCancellationStatus_State
+  #-}
+
+-- | The aggregation type for key and baseline chart data in scorecard chart. This field is not supported for data source charts. Use the ChartData.aggregateType field of the key/value/data or baseline/value/data instead for data source charts. This field is optional.
+newtype ScorecardChartSpec_AggregateType = ScorecardChartSpec_AggregateType {fromScorecardChartSpec_AggregateType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern ScorecardChartSpec_AggregateType_CHARTAGGREGATETYPEUNSPECIFIED :: ScorecardChartSpec_AggregateType
+pattern ScorecardChartSpec_AggregateType_CHARTAGGREGATETYPEUNSPECIFIED = ScorecardChartSpec_AggregateType "CHART_AGGREGATE_TYPE_UNSPECIFIED"
+
+-- | Average aggregate function.
+pattern ScorecardChartSpec_AggregateType_Average :: ScorecardChartSpec_AggregateType
+pattern ScorecardChartSpec_AggregateType_Average = ScorecardChartSpec_AggregateType "AVERAGE"
+
+-- | Count aggregate function.
+pattern ScorecardChartSpec_AggregateType_Count :: ScorecardChartSpec_AggregateType
+pattern ScorecardChartSpec_AggregateType_Count = ScorecardChartSpec_AggregateType "COUNT"
+
+-- | Maximum aggregate function.
+pattern ScorecardChartSpec_AggregateType_Max :: ScorecardChartSpec_AggregateType
+pattern ScorecardChartSpec_AggregateType_Max = ScorecardChartSpec_AggregateType "MAX"
+
+-- | Median aggregate function.
+pattern ScorecardChartSpec_AggregateType_Median :: ScorecardChartSpec_AggregateType
+pattern ScorecardChartSpec_AggregateType_Median = ScorecardChartSpec_AggregateType "MEDIAN"
+
+-- | Minimum aggregate function.
+pattern ScorecardChartSpec_AggregateType_Min :: ScorecardChartSpec_AggregateType
+pattern ScorecardChartSpec_AggregateType_Min = ScorecardChartSpec_AggregateType "MIN"
+
+-- | Sum aggregate function.
+pattern ScorecardChartSpec_AggregateType_Sum :: ScorecardChartSpec_AggregateType
+pattern ScorecardChartSpec_AggregateType_Sum = ScorecardChartSpec_AggregateType "SUM"
+
+{-# COMPLETE
+  ScorecardChartSpec_AggregateType_CHARTAGGREGATETYPEUNSPECIFIED,
+  ScorecardChartSpec_AggregateType_Average,
+  ScorecardChartSpec_AggregateType_Count,
+  ScorecardChartSpec_AggregateType_Max,
+  ScorecardChartSpec_AggregateType_Median,
+  ScorecardChartSpec_AggregateType_Min,
+  ScorecardChartSpec_AggregateType_Sum,
+  ScorecardChartSpec_AggregateType
+  #-}
+
+-- | The number format source used in the scorecard chart. This field is optional.
+newtype ScorecardChartSpec_NumberFormatSource = ScorecardChartSpec_NumberFormatSource {fromScorecardChartSpec_NumberFormatSource :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern ScorecardChartSpec_NumberFormatSource_CHARTNUMBERFORMATSOURCEUNDEFINED :: ScorecardChartSpec_NumberFormatSource
+pattern ScorecardChartSpec_NumberFormatSource_CHARTNUMBERFORMATSOURCEUNDEFINED = ScorecardChartSpec_NumberFormatSource "CHART_NUMBER_FORMAT_SOURCE_UNDEFINED"
+
+-- | Inherit number formatting from data.
+pattern ScorecardChartSpec_NumberFormatSource_FROMDATA :: ScorecardChartSpec_NumberFormatSource
+pattern ScorecardChartSpec_NumberFormatSource_FROMDATA = ScorecardChartSpec_NumberFormatSource "FROM_DATA"
+
+-- | Apply custom formatting as specified by ChartCustomNumberFormatOptions.
+pattern ScorecardChartSpec_NumberFormatSource_Custom :: ScorecardChartSpec_NumberFormatSource
+pattern ScorecardChartSpec_NumberFormatSource_Custom = ScorecardChartSpec_NumberFormatSource "CUSTOM"
+
+{-# COMPLETE
+  ScorecardChartSpec_NumberFormatSource_CHARTNUMBERFORMATSOURCEUNDEFINED,
+  ScorecardChartSpec_NumberFormatSource_FROMDATA,
+  ScorecardChartSpec_NumberFormatSource_Custom,
+  ScorecardChartSpec_NumberFormatSource
+  #-}
+
+-- | The type of sheet. Defaults to GRID. This field cannot be changed once set.
+newtype SheetProperties_SheetType = SheetProperties_SheetType {fromSheetProperties_SheetType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern SheetProperties_SheetType_SHEETTYPEUNSPECIFIED :: SheetProperties_SheetType
+pattern SheetProperties_SheetType_SHEETTYPEUNSPECIFIED = SheetProperties_SheetType "SHEET_TYPE_UNSPECIFIED"
+
+-- | The sheet is a grid.
+pattern SheetProperties_SheetType_Grid :: SheetProperties_SheetType
+pattern SheetProperties_SheetType_Grid = SheetProperties_SheetType "GRID"
+
+-- | The sheet has no grid and instead has an object like a chart or image.
+pattern SheetProperties_SheetType_Object :: SheetProperties_SheetType
+pattern SheetProperties_SheetType_Object = SheetProperties_SheetType "OBJECT"
+
+-- | The sheet connects with an external DataSource and shows the preview of data.
+pattern SheetProperties_SheetType_DATASOURCE :: SheetProperties_SheetType
+pattern SheetProperties_SheetType_DATASOURCE = SheetProperties_SheetType "DATA_SOURCE"
+
+{-# COMPLETE
+  SheetProperties_SheetType_SHEETTYPEUNSPECIFIED,
+  SheetProperties_SheetType_Grid,
+  SheetProperties_SheetType_Object,
+  SheetProperties_SheetType_DATASOURCE,
+  SheetProperties_SheetType
+  #-}
+
+-- | The horizontal alignment of title in the slicer. If unspecified, defaults to @LEFT@
+newtype SlicerSpec_HorizontalAlignment = SlicerSpec_HorizontalAlignment {fromSlicerSpec_HorizontalAlignment :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The horizontal alignment is not specified. Do not use this.
+pattern SlicerSpec_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED :: SlicerSpec_HorizontalAlignment
+pattern SlicerSpec_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED = SlicerSpec_HorizontalAlignment "HORIZONTAL_ALIGN_UNSPECIFIED"
+
+-- | The text is explicitly aligned to the left of the cell.
+pattern SlicerSpec_HorizontalAlignment_Left' :: SlicerSpec_HorizontalAlignment
+pattern SlicerSpec_HorizontalAlignment_Left' = SlicerSpec_HorizontalAlignment "LEFT"
+
+-- | The text is explicitly aligned to the center of the cell.
+pattern SlicerSpec_HorizontalAlignment_Center :: SlicerSpec_HorizontalAlignment
+pattern SlicerSpec_HorizontalAlignment_Center = SlicerSpec_HorizontalAlignment "CENTER"
+
+-- | The text is explicitly aligned to the right of the cell.
+pattern SlicerSpec_HorizontalAlignment_Right' :: SlicerSpec_HorizontalAlignment
+pattern SlicerSpec_HorizontalAlignment_Right' = SlicerSpec_HorizontalAlignment "RIGHT"
+
+{-# COMPLETE
+  SlicerSpec_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED,
+  SlicerSpec_HorizontalAlignment_Left',
+  SlicerSpec_HorizontalAlignment_Center,
+  SlicerSpec_HorizontalAlignment_Right',
+  SlicerSpec_HorizontalAlignment
+  #-}
+
+-- | The order data should be sorted.
+newtype SortSpec_SortOrder = SortSpec_SortOrder {fromSortSpec_SortOrder :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use this.
+pattern SortSpec_SortOrder_SORTORDERUNSPECIFIED :: SortSpec_SortOrder
+pattern SortSpec_SortOrder_SORTORDERUNSPECIFIED = SortSpec_SortOrder "SORT_ORDER_UNSPECIFIED"
+
+-- | Sort ascending.
+pattern SortSpec_SortOrder_Ascending :: SortSpec_SortOrder
+pattern SortSpec_SortOrder_Ascending = SortSpec_SortOrder "ASCENDING"
+
+-- | Sort descending.
+pattern SortSpec_SortOrder_Descending :: SortSpec_SortOrder
+pattern SortSpec_SortOrder_Descending = SortSpec_SortOrder "DESCENDING"
+
+{-# COMPLETE
+  SortSpec_SortOrder_SORTORDERUNSPECIFIED,
+  SortSpec_SortOrder_Ascending,
+  SortSpec_SortOrder_Descending,
+  SortSpec_SortOrder
+  #-}
+
+-- | The dimension that data should be filled into.
+newtype SourceAndDestination_Dimension = SourceAndDestination_Dimension {fromSourceAndDestination_Dimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern SourceAndDestination_Dimension_DIMENSIONUNSPECIFIED :: SourceAndDestination_Dimension
+pattern SourceAndDestination_Dimension_DIMENSIONUNSPECIFIED = SourceAndDestination_Dimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern SourceAndDestination_Dimension_Rows :: SourceAndDestination_Dimension
+pattern SourceAndDestination_Dimension_Rows = SourceAndDestination_Dimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern SourceAndDestination_Dimension_Columns :: SourceAndDestination_Dimension
+pattern SourceAndDestination_Dimension_Columns = SourceAndDestination_Dimension "COLUMNS"
+
+{-# COMPLETE
+  SourceAndDestination_Dimension_DIMENSIONUNSPECIFIED,
+  SourceAndDestination_Dimension_Rows,
+  SourceAndDestination_Dimension_Columns,
+  SourceAndDestination_Dimension
+  #-}
+
+-- | The amount of time to wait before volatile functions are recalculated.
+newtype SpreadsheetProperties_AutoRecalc = SpreadsheetProperties_AutoRecalc {fromSpreadsheetProperties_AutoRecalc :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value. This value must not be used.
+pattern SpreadsheetProperties_AutoRecalc_RECALCULATIONINTERVALUNSPECIFIED :: SpreadsheetProperties_AutoRecalc
+pattern SpreadsheetProperties_AutoRecalc_RECALCULATIONINTERVALUNSPECIFIED = SpreadsheetProperties_AutoRecalc "RECALCULATION_INTERVAL_UNSPECIFIED"
+
+-- | Volatile functions are updated on every change.
+pattern SpreadsheetProperties_AutoRecalc_ONCHANGE :: SpreadsheetProperties_AutoRecalc
+pattern SpreadsheetProperties_AutoRecalc_ONCHANGE = SpreadsheetProperties_AutoRecalc "ON_CHANGE"
+
+-- | Volatile functions are updated on every change and every minute.
+pattern SpreadsheetProperties_AutoRecalc_Minute :: SpreadsheetProperties_AutoRecalc
+pattern SpreadsheetProperties_AutoRecalc_Minute = SpreadsheetProperties_AutoRecalc "MINUTE"
+
+-- | Volatile functions are updated on every change and hourly.
+pattern SpreadsheetProperties_AutoRecalc_Hour :: SpreadsheetProperties_AutoRecalc
+pattern SpreadsheetProperties_AutoRecalc_Hour = SpreadsheetProperties_AutoRecalc "HOUR"
+
+{-# COMPLETE
+  SpreadsheetProperties_AutoRecalc_RECALCULATIONINTERVALUNSPECIFIED,
+  SpreadsheetProperties_AutoRecalc_ONCHANGE,
+  SpreadsheetProperties_AutoRecalc_Minute,
+  SpreadsheetProperties_AutoRecalc_Hour,
+  SpreadsheetProperties_AutoRecalc
+  #-}
+
+-- | Horizontal alignment setting for the piece of text.
+newtype TextPosition_HorizontalAlignment = TextPosition_HorizontalAlignment {fromTextPosition_HorizontalAlignment :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The horizontal alignment is not specified. Do not use this.
+pattern TextPosition_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED :: TextPosition_HorizontalAlignment
+pattern TextPosition_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED = TextPosition_HorizontalAlignment "HORIZONTAL_ALIGN_UNSPECIFIED"
+
+-- | The text is explicitly aligned to the left of the cell.
+pattern TextPosition_HorizontalAlignment_Left' :: TextPosition_HorizontalAlignment
+pattern TextPosition_HorizontalAlignment_Left' = TextPosition_HorizontalAlignment "LEFT"
+
+-- | The text is explicitly aligned to the center of the cell.
+pattern TextPosition_HorizontalAlignment_Center :: TextPosition_HorizontalAlignment
+pattern TextPosition_HorizontalAlignment_Center = TextPosition_HorizontalAlignment "CENTER"
+
+-- | The text is explicitly aligned to the right of the cell.
+pattern TextPosition_HorizontalAlignment_Right' :: TextPosition_HorizontalAlignment
+pattern TextPosition_HorizontalAlignment_Right' = TextPosition_HorizontalAlignment "RIGHT"
+
+{-# COMPLETE
+  TextPosition_HorizontalAlignment_HORIZONTALALIGNUNSPECIFIED,
+  TextPosition_HorizontalAlignment_Left',
+  TextPosition_HorizontalAlignment_Center,
+  TextPosition_HorizontalAlignment_Right',
+  TextPosition_HorizontalAlignment
+  #-}
+
+-- | The delimiter type to use.
+newtype TextToColumnsRequest_DelimiterType = TextToColumnsRequest_DelimiterType {fromTextToColumnsRequest_DelimiterType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value. This value must not be used.
+pattern TextToColumnsRequest_DelimiterType_DELIMITERTYPEUNSPECIFIED :: TextToColumnsRequest_DelimiterType
+pattern TextToColumnsRequest_DelimiterType_DELIMITERTYPEUNSPECIFIED = TextToColumnsRequest_DelimiterType "DELIMITER_TYPE_UNSPECIFIED"
+
+-- | \",\"
+pattern TextToColumnsRequest_DelimiterType_Comma :: TextToColumnsRequest_DelimiterType
+pattern TextToColumnsRequest_DelimiterType_Comma = TextToColumnsRequest_DelimiterType "COMMA"
+
+-- | \";\"
+pattern TextToColumnsRequest_DelimiterType_Semicolon :: TextToColumnsRequest_DelimiterType
+pattern TextToColumnsRequest_DelimiterType_Semicolon = TextToColumnsRequest_DelimiterType "SEMICOLON"
+
+-- | \".\"
+pattern TextToColumnsRequest_DelimiterType_Period :: TextToColumnsRequest_DelimiterType
+pattern TextToColumnsRequest_DelimiterType_Period = TextToColumnsRequest_DelimiterType "PERIOD"
+
+-- | \" \"
+pattern TextToColumnsRequest_DelimiterType_Space :: TextToColumnsRequest_DelimiterType
+pattern TextToColumnsRequest_DelimiterType_Space = TextToColumnsRequest_DelimiterType "SPACE"
+
+-- | A custom value as defined in delimiter.
+pattern TextToColumnsRequest_DelimiterType_Custom :: TextToColumnsRequest_DelimiterType
+pattern TextToColumnsRequest_DelimiterType_Custom = TextToColumnsRequest_DelimiterType "CUSTOM"
+
+-- | Automatically detect columns.
+pattern TextToColumnsRequest_DelimiterType_Autodetect :: TextToColumnsRequest_DelimiterType
+pattern TextToColumnsRequest_DelimiterType_Autodetect = TextToColumnsRequest_DelimiterType "AUTODETECT"
+
+{-# COMPLETE
+  TextToColumnsRequest_DelimiterType_DELIMITERTYPEUNSPECIFIED,
+  TextToColumnsRequest_DelimiterType_Comma,
+  TextToColumnsRequest_DelimiterType_Semicolon,
+  TextToColumnsRequest_DelimiterType_Period,
+  TextToColumnsRequest_DelimiterType_Space,
+  TextToColumnsRequest_DelimiterType_Custom,
+  TextToColumnsRequest_DelimiterType_Autodetect,
+  TextToColumnsRequest_DelimiterType
+  #-}
+
+-- | The type of the spreadsheet theme color.
+newtype ThemeColorPair_ColorType = ThemeColorPair_ColorType {fromThemeColorPair_ColorType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Unspecified theme color
+pattern ThemeColorPair_ColorType_THEMECOLORTYPEUNSPECIFIED :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_THEMECOLORTYPEUNSPECIFIED = ThemeColorPair_ColorType "THEME_COLOR_TYPE_UNSPECIFIED"
+
+-- | Represents the primary text color
+pattern ThemeColorPair_ColorType_Text :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_Text = ThemeColorPair_ColorType "TEXT"
+
+-- | Represents the primary background color
+pattern ThemeColorPair_ColorType_Background :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_Background = ThemeColorPair_ColorType "BACKGROUND"
+
+-- | Represents the first accent color
+pattern ThemeColorPair_ColorType_ACCENT1 :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_ACCENT1 = ThemeColorPair_ColorType "ACCENT1"
+
+-- | Represents the second accent color
+pattern ThemeColorPair_ColorType_ACCENT2 :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_ACCENT2 = ThemeColorPair_ColorType "ACCENT2"
+
+-- | Represents the third accent color
+pattern ThemeColorPair_ColorType_ACCENT3 :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_ACCENT3 = ThemeColorPair_ColorType "ACCENT3"
+
+-- | Represents the fourth accent color
+pattern ThemeColorPair_ColorType_ACCENT4 :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_ACCENT4 = ThemeColorPair_ColorType "ACCENT4"
+
+-- | Represents the fifth accent color
+pattern ThemeColorPair_ColorType_ACCENT5 :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_ACCENT5 = ThemeColorPair_ColorType "ACCENT5"
+
+-- | Represents the sixth accent color
+pattern ThemeColorPair_ColorType_ACCENT6 :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_ACCENT6 = ThemeColorPair_ColorType "ACCENT6"
+
+-- | Represents the color to use for hyperlinks
+pattern ThemeColorPair_ColorType_Link :: ThemeColorPair_ColorType
+pattern ThemeColorPair_ColorType_Link = ThemeColorPair_ColorType "LINK"
+
+{-# COMPLETE
+  ThemeColorPair_ColorType_THEMECOLORTYPEUNSPECIFIED,
+  ThemeColorPair_ColorType_Text,
+  ThemeColorPair_ColorType_Background,
+  ThemeColorPair_ColorType_ACCENT1,
+  ThemeColorPair_ColorType_ACCENT2,
+  ThemeColorPair_ColorType_ACCENT3,
+  ThemeColorPair_ColorType_ACCENT4,
+  ThemeColorPair_ColorType_ACCENT5,
+  ThemeColorPair_ColorType_ACCENT6,
+  ThemeColorPair_ColorType_Link,
+  ThemeColorPair_ColorType
+  #-}
+
+-- | 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.
+newtype ValueRange_MajorDimension = ValueRange_MajorDimension {fromValueRange_MajorDimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern ValueRange_MajorDimension_DIMENSIONUNSPECIFIED :: ValueRange_MajorDimension
+pattern ValueRange_MajorDimension_DIMENSIONUNSPECIFIED = ValueRange_MajorDimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern ValueRange_MajorDimension_Rows :: ValueRange_MajorDimension
+pattern ValueRange_MajorDimension_Rows = ValueRange_MajorDimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern ValueRange_MajorDimension_Columns :: ValueRange_MajorDimension
+pattern ValueRange_MajorDimension_Columns = ValueRange_MajorDimension "COLUMNS"
+
+{-# COMPLETE
+  ValueRange_MajorDimension_DIMENSIONUNSPECIFIED,
+  ValueRange_MajorDimension_Rows,
+  ValueRange_MajorDimension_Columns,
+  ValueRange_MajorDimension
+  #-}
+
+-- | The stacked type.
+newtype WaterfallChartSpec_StackedType = WaterfallChartSpec_StackedType {fromWaterfallChartSpec_StackedType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default value, do not use.
+pattern WaterfallChartSpec_StackedType_WATERFALLSTACKEDTYPEUNSPECIFIED :: WaterfallChartSpec_StackedType
+pattern WaterfallChartSpec_StackedType_WATERFALLSTACKEDTYPEUNSPECIFIED = WaterfallChartSpec_StackedType "WATERFALL_STACKED_TYPE_UNSPECIFIED"
+
+-- | Values corresponding to the same domain (horizontal axis) value will be stacked vertically.
+pattern WaterfallChartSpec_StackedType_Stacked :: WaterfallChartSpec_StackedType
+pattern WaterfallChartSpec_StackedType_Stacked = WaterfallChartSpec_StackedType "STACKED"
+
+-- | Series will spread out along the horizontal axis.
+pattern WaterfallChartSpec_StackedType_Sequential :: WaterfallChartSpec_StackedType
+pattern WaterfallChartSpec_StackedType_Sequential = WaterfallChartSpec_StackedType "SEQUENTIAL"
+
+{-# COMPLETE
+  WaterfallChartSpec_StackedType_WATERFALLSTACKEDTYPEUNSPECIFIED,
+  WaterfallChartSpec_StackedType_Stacked,
+  WaterfallChartSpec_StackedType_Sequential,
+  WaterfallChartSpec_StackedType
+  #-}
+
+-- | How the input data should be inserted.
+newtype SpreadsheetsValuesAppendInsertDataOption = SpreadsheetsValuesAppendInsertDataOption {fromSpreadsheetsValuesAppendInsertDataOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The new data overwrites existing data in the areas it is written. (Note: adding data to the end of the sheet will still insert new rows or columns so the data can be written.)
+pattern SpreadsheetsValuesAppendInsertDataOption_Overwrite :: SpreadsheetsValuesAppendInsertDataOption
+pattern SpreadsheetsValuesAppendInsertDataOption_Overwrite = SpreadsheetsValuesAppendInsertDataOption "OVERWRITE"
+
+-- | Rows are inserted for the new data.
+pattern SpreadsheetsValuesAppendInsertDataOption_INSERTROWS :: SpreadsheetsValuesAppendInsertDataOption
+pattern SpreadsheetsValuesAppendInsertDataOption_INSERTROWS = SpreadsheetsValuesAppendInsertDataOption "INSERT_ROWS"
+
+{-# COMPLETE
+  SpreadsheetsValuesAppendInsertDataOption_Overwrite,
+  SpreadsheetsValuesAppendInsertDataOption_INSERTROWS,
+  SpreadsheetsValuesAppendInsertDataOption
+  #-}
+
+-- | 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 SERIAL_NUMBER.
+newtype SpreadsheetsValuesAppendResponseDateTimeRenderOption = SpreadsheetsValuesAppendResponseDateTimeRenderOption {fromSpreadsheetsValuesAppendResponseDateTimeRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | 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 30th 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.
+pattern SpreadsheetsValuesAppendResponseDateTimeRenderOption_SERIALNUMBER :: SpreadsheetsValuesAppendResponseDateTimeRenderOption
+pattern SpreadsheetsValuesAppendResponseDateTimeRenderOption_SERIALNUMBER = SpreadsheetsValuesAppendResponseDateTimeRenderOption "SERIAL_NUMBER"
+
+-- | Instructs date, time, datetime, and duration fields to be output as strings in their given number format (which depends on the spreadsheet locale).
+pattern SpreadsheetsValuesAppendResponseDateTimeRenderOption_FORMATTEDSTRING :: SpreadsheetsValuesAppendResponseDateTimeRenderOption
+pattern SpreadsheetsValuesAppendResponseDateTimeRenderOption_FORMATTEDSTRING = SpreadsheetsValuesAppendResponseDateTimeRenderOption "FORMATTED_STRING"
+
+{-# COMPLETE
+  SpreadsheetsValuesAppendResponseDateTimeRenderOption_SERIALNUMBER,
+  SpreadsheetsValuesAppendResponseDateTimeRenderOption_FORMATTEDSTRING,
+  SpreadsheetsValuesAppendResponseDateTimeRenderOption
+  #-}
+
+-- | Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
+newtype SpreadsheetsValuesAppendResponseValueRenderOption = SpreadsheetsValuesAppendResponseValueRenderOption {fromSpreadsheetsValuesAppendResponseValueRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Values will be calculated & formatted in the response 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\"@.
+pattern SpreadsheetsValuesAppendResponseValueRenderOption_FORMATTEDVALUE :: SpreadsheetsValuesAppendResponseValueRenderOption
+pattern SpreadsheetsValuesAppendResponseValueRenderOption_FORMATTEDVALUE = SpreadsheetsValuesAppendResponseValueRenderOption "FORMATTED_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@.
+pattern SpreadsheetsValuesAppendResponseValueRenderOption_UNFORMATTEDVALUE :: SpreadsheetsValuesAppendResponseValueRenderOption
+pattern SpreadsheetsValuesAppendResponseValueRenderOption_UNFORMATTEDVALUE = SpreadsheetsValuesAppendResponseValueRenderOption "UNFORMATTED_VALUE"
+
+-- | 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\"@. Sheets treats date and time values as decimal values. This lets you perform arithmetic on them in formulas. For more information on interpreting date and time values, see <https://developers.google.com/sheets/api/guides/formats#about_date_time_values About date & time values>.
+pattern SpreadsheetsValuesAppendResponseValueRenderOption_Formula :: SpreadsheetsValuesAppendResponseValueRenderOption
+pattern SpreadsheetsValuesAppendResponseValueRenderOption_Formula = SpreadsheetsValuesAppendResponseValueRenderOption "FORMULA"
+
+{-# COMPLETE
+  SpreadsheetsValuesAppendResponseValueRenderOption_FORMATTEDVALUE,
+  SpreadsheetsValuesAppendResponseValueRenderOption_UNFORMATTEDVALUE,
+  SpreadsheetsValuesAppendResponseValueRenderOption_Formula,
+  SpreadsheetsValuesAppendResponseValueRenderOption
+  #-}
+
+-- | How the input data should be interpreted.
+newtype SpreadsheetsValuesAppendValueInputOption = SpreadsheetsValuesAppendValueInputOption {fromSpreadsheetsValuesAppendValueInputOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default input value. This value must not be used.
+pattern SpreadsheetsValuesAppendValueInputOption_INPUTVALUEOPTIONUNSPECIFIED :: SpreadsheetsValuesAppendValueInputOption
+pattern SpreadsheetsValuesAppendValueInputOption_INPUTVALUEOPTIONUNSPECIFIED = SpreadsheetsValuesAppendValueInputOption "INPUT_VALUE_OPTION_UNSPECIFIED"
+
+-- | The values the user has entered will not be parsed and will be stored as-is.
+pattern SpreadsheetsValuesAppendValueInputOption_Raw :: SpreadsheetsValuesAppendValueInputOption
+pattern SpreadsheetsValuesAppendValueInputOption_Raw = SpreadsheetsValuesAppendValueInputOption "RAW"
+
+-- | 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.
+pattern SpreadsheetsValuesAppendValueInputOption_USERENTERED :: SpreadsheetsValuesAppendValueInputOption
+pattern SpreadsheetsValuesAppendValueInputOption_USERENTERED = SpreadsheetsValuesAppendValueInputOption "USER_ENTERED"
+
+{-# COMPLETE
+  SpreadsheetsValuesAppendValueInputOption_INPUTVALUEOPTIONUNSPECIFIED,
+  SpreadsheetsValuesAppendValueInputOption_Raw,
+  SpreadsheetsValuesAppendValueInputOption_USERENTERED,
+  SpreadsheetsValuesAppendValueInputOption
+  #-}
+
+-- | 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 SERIAL/NUMBER.
+newtype SpreadsheetsValuesBatchGetDateTimeRenderOption = SpreadsheetsValuesBatchGetDateTimeRenderOption {fromSpreadsheetsValuesBatchGetDateTimeRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | 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 30th 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.
+pattern SpreadsheetsValuesBatchGetDateTimeRenderOption_SERIALNUMBER :: SpreadsheetsValuesBatchGetDateTimeRenderOption
+pattern SpreadsheetsValuesBatchGetDateTimeRenderOption_SERIALNUMBER = SpreadsheetsValuesBatchGetDateTimeRenderOption "SERIAL_NUMBER"
+
+-- | Instructs date, time, datetime, and duration fields to be output as strings in their given number format (which depends on the spreadsheet locale).
+pattern SpreadsheetsValuesBatchGetDateTimeRenderOption_FORMATTEDSTRING :: SpreadsheetsValuesBatchGetDateTimeRenderOption
+pattern SpreadsheetsValuesBatchGetDateTimeRenderOption_FORMATTEDSTRING = SpreadsheetsValuesBatchGetDateTimeRenderOption "FORMATTED_STRING"
+
+{-# COMPLETE
+  SpreadsheetsValuesBatchGetDateTimeRenderOption_SERIALNUMBER,
+  SpreadsheetsValuesBatchGetDateTimeRenderOption_FORMATTEDSTRING,
+  SpreadsheetsValuesBatchGetDateTimeRenderOption
+  #-}
+
+-- | The major dimension that results should use. For example, if the spreadsheet data is: @A1=1,B1=2,A2=3,B2=4@, then requesting @ranges=[\"A1:B2\"],majorDimension=ROWS@ returns @[[1,2],[3,4]]@, whereas requesting @ranges=[\"A1:B2\"],majorDimension=COLUMNS@ returns @[[1,3],[2,4]]@.
+newtype SpreadsheetsValuesBatchGetMajorDimension = SpreadsheetsValuesBatchGetMajorDimension {fromSpreadsheetsValuesBatchGetMajorDimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern SpreadsheetsValuesBatchGetMajorDimension_DIMENSIONUNSPECIFIED :: SpreadsheetsValuesBatchGetMajorDimension
+pattern SpreadsheetsValuesBatchGetMajorDimension_DIMENSIONUNSPECIFIED = SpreadsheetsValuesBatchGetMajorDimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern SpreadsheetsValuesBatchGetMajorDimension_Rows :: SpreadsheetsValuesBatchGetMajorDimension
+pattern SpreadsheetsValuesBatchGetMajorDimension_Rows = SpreadsheetsValuesBatchGetMajorDimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern SpreadsheetsValuesBatchGetMajorDimension_Columns :: SpreadsheetsValuesBatchGetMajorDimension
+pattern SpreadsheetsValuesBatchGetMajorDimension_Columns = SpreadsheetsValuesBatchGetMajorDimension "COLUMNS"
+
+{-# COMPLETE
+  SpreadsheetsValuesBatchGetMajorDimension_DIMENSIONUNSPECIFIED,
+  SpreadsheetsValuesBatchGetMajorDimension_Rows,
+  SpreadsheetsValuesBatchGetMajorDimension_Columns,
+  SpreadsheetsValuesBatchGetMajorDimension
+  #-}
+
+-- | How values should be represented in the output. The default render option is ValueRenderOption.FORMATTED_VALUE.
+newtype SpreadsheetsValuesBatchGetValueRenderOption = SpreadsheetsValuesBatchGetValueRenderOption {fromSpreadsheetsValuesBatchGetValueRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Values will be calculated & formatted in the response 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\"@.
+pattern SpreadsheetsValuesBatchGetValueRenderOption_FORMATTEDVALUE :: SpreadsheetsValuesBatchGetValueRenderOption
+pattern SpreadsheetsValuesBatchGetValueRenderOption_FORMATTEDVALUE = SpreadsheetsValuesBatchGetValueRenderOption "FORMATTED_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@.
+pattern SpreadsheetsValuesBatchGetValueRenderOption_UNFORMATTEDVALUE :: SpreadsheetsValuesBatchGetValueRenderOption
+pattern SpreadsheetsValuesBatchGetValueRenderOption_UNFORMATTEDVALUE = SpreadsheetsValuesBatchGetValueRenderOption "UNFORMATTED_VALUE"
+
+-- | 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\"@. Sheets treats date and time values as decimal values. This lets you perform arithmetic on them in formulas. For more information on interpreting date and time values, see <https://developers.google.com/sheets/api/guides/formats#about_date_time_values About date & time values>.
+pattern SpreadsheetsValuesBatchGetValueRenderOption_Formula :: SpreadsheetsValuesBatchGetValueRenderOption
+pattern SpreadsheetsValuesBatchGetValueRenderOption_Formula = SpreadsheetsValuesBatchGetValueRenderOption "FORMULA"
+
+{-# COMPLETE
+  SpreadsheetsValuesBatchGetValueRenderOption_FORMATTEDVALUE,
+  SpreadsheetsValuesBatchGetValueRenderOption_UNFORMATTEDVALUE,
+  SpreadsheetsValuesBatchGetValueRenderOption_Formula,
+  SpreadsheetsValuesBatchGetValueRenderOption
+  #-}
+
+-- | 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 SERIAL/NUMBER.
+newtype SpreadsheetsValuesGetDateTimeRenderOption = SpreadsheetsValuesGetDateTimeRenderOption {fromSpreadsheetsValuesGetDateTimeRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | 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 30th 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.
+pattern SpreadsheetsValuesGetDateTimeRenderOption_SERIALNUMBER :: SpreadsheetsValuesGetDateTimeRenderOption
+pattern SpreadsheetsValuesGetDateTimeRenderOption_SERIALNUMBER = SpreadsheetsValuesGetDateTimeRenderOption "SERIAL_NUMBER"
+
+-- | Instructs date, time, datetime, and duration fields to be output as strings in their given number format (which depends on the spreadsheet locale).
+pattern SpreadsheetsValuesGetDateTimeRenderOption_FORMATTEDSTRING :: SpreadsheetsValuesGetDateTimeRenderOption
+pattern SpreadsheetsValuesGetDateTimeRenderOption_FORMATTEDSTRING = SpreadsheetsValuesGetDateTimeRenderOption "FORMATTED_STRING"
+
+{-# COMPLETE
+  SpreadsheetsValuesGetDateTimeRenderOption_SERIALNUMBER,
+  SpreadsheetsValuesGetDateTimeRenderOption_FORMATTEDSTRING,
+  SpreadsheetsValuesGetDateTimeRenderOption
+  #-}
+
+-- | The major dimension that results should use. For example, if the spreadsheet data in Sheet1 is: @A1=1,B1=2,A2=3,B2=4@, then requesting @range=Sheet1!A1:B2?majorDimension=ROWS@ returns @[[1,2],[3,4]]@, whereas requesting @range=Sheet1!A1:B2?majorDimension=COLUMNS@ returns @[[1,3],[2,4]]@.
+newtype SpreadsheetsValuesGetMajorDimension = SpreadsheetsValuesGetMajorDimension {fromSpreadsheetsValuesGetMajorDimension :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The default value, do not use.
+pattern SpreadsheetsValuesGetMajorDimension_DIMENSIONUNSPECIFIED :: SpreadsheetsValuesGetMajorDimension
+pattern SpreadsheetsValuesGetMajorDimension_DIMENSIONUNSPECIFIED = SpreadsheetsValuesGetMajorDimension "DIMENSION_UNSPECIFIED"
+
+-- | Operates on the rows of a sheet.
+pattern SpreadsheetsValuesGetMajorDimension_Rows :: SpreadsheetsValuesGetMajorDimension
+pattern SpreadsheetsValuesGetMajorDimension_Rows = SpreadsheetsValuesGetMajorDimension "ROWS"
+
+-- | Operates on the columns of a sheet.
+pattern SpreadsheetsValuesGetMajorDimension_Columns :: SpreadsheetsValuesGetMajorDimension
+pattern SpreadsheetsValuesGetMajorDimension_Columns = SpreadsheetsValuesGetMajorDimension "COLUMNS"
+
+{-# COMPLETE
+  SpreadsheetsValuesGetMajorDimension_DIMENSIONUNSPECIFIED,
+  SpreadsheetsValuesGetMajorDimension_Rows,
+  SpreadsheetsValuesGetMajorDimension_Columns,
+  SpreadsheetsValuesGetMajorDimension
+  #-}
+
+-- | How values should be represented in the output. The default render option is FORMATTED_VALUE.
+newtype SpreadsheetsValuesGetValueRenderOption = SpreadsheetsValuesGetValueRenderOption {fromSpreadsheetsValuesGetValueRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Values will be calculated & formatted in the response 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\"@.
+pattern SpreadsheetsValuesGetValueRenderOption_FORMATTEDVALUE :: SpreadsheetsValuesGetValueRenderOption
+pattern SpreadsheetsValuesGetValueRenderOption_FORMATTEDVALUE = SpreadsheetsValuesGetValueRenderOption "FORMATTED_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@.
+pattern SpreadsheetsValuesGetValueRenderOption_UNFORMATTEDVALUE :: SpreadsheetsValuesGetValueRenderOption
+pattern SpreadsheetsValuesGetValueRenderOption_UNFORMATTEDVALUE = SpreadsheetsValuesGetValueRenderOption "UNFORMATTED_VALUE"
+
+-- | 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\"@. Sheets treats date and time values as decimal values. This lets you perform arithmetic on them in formulas. For more information on interpreting date and time values, see <https://developers.google.com/sheets/api/guides/formats#about_date_time_values About date & time values>.
+pattern SpreadsheetsValuesGetValueRenderOption_Formula :: SpreadsheetsValuesGetValueRenderOption
+pattern SpreadsheetsValuesGetValueRenderOption_Formula = SpreadsheetsValuesGetValueRenderOption "FORMULA"
+
+{-# COMPLETE
+  SpreadsheetsValuesGetValueRenderOption_FORMATTEDVALUE,
+  SpreadsheetsValuesGetValueRenderOption_UNFORMATTEDVALUE,
+  SpreadsheetsValuesGetValueRenderOption_Formula,
+  SpreadsheetsValuesGetValueRenderOption
+  #-}
+
+-- | 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 SERIAL_NUMBER.
+newtype SpreadsheetsValuesUpdateResponseDateTimeRenderOption = SpreadsheetsValuesUpdateResponseDateTimeRenderOption {fromSpreadsheetsValuesUpdateResponseDateTimeRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | 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 30th 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.
+pattern SpreadsheetsValuesUpdateResponseDateTimeRenderOption_SERIALNUMBER :: SpreadsheetsValuesUpdateResponseDateTimeRenderOption
+pattern SpreadsheetsValuesUpdateResponseDateTimeRenderOption_SERIALNUMBER = SpreadsheetsValuesUpdateResponseDateTimeRenderOption "SERIAL_NUMBER"
+
+-- | Instructs date, time, datetime, and duration fields to be output as strings in their given number format (which depends on the spreadsheet locale).
+pattern SpreadsheetsValuesUpdateResponseDateTimeRenderOption_FORMATTEDSTRING :: SpreadsheetsValuesUpdateResponseDateTimeRenderOption
+pattern SpreadsheetsValuesUpdateResponseDateTimeRenderOption_FORMATTEDSTRING = SpreadsheetsValuesUpdateResponseDateTimeRenderOption "FORMATTED_STRING"
+
+{-# COMPLETE
+  SpreadsheetsValuesUpdateResponseDateTimeRenderOption_SERIALNUMBER,
+  SpreadsheetsValuesUpdateResponseDateTimeRenderOption_FORMATTEDSTRING,
+  SpreadsheetsValuesUpdateResponseDateTimeRenderOption
+  #-}
+
+-- | Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
+newtype SpreadsheetsValuesUpdateResponseValueRenderOption = SpreadsheetsValuesUpdateResponseValueRenderOption {fromSpreadsheetsValuesUpdateResponseValueRenderOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Values will be calculated & formatted in the response 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\"@.
+pattern SpreadsheetsValuesUpdateResponseValueRenderOption_FORMATTEDVALUE :: SpreadsheetsValuesUpdateResponseValueRenderOption
+pattern SpreadsheetsValuesUpdateResponseValueRenderOption_FORMATTEDVALUE = SpreadsheetsValuesUpdateResponseValueRenderOption "FORMATTED_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@.
+pattern SpreadsheetsValuesUpdateResponseValueRenderOption_UNFORMATTEDVALUE :: SpreadsheetsValuesUpdateResponseValueRenderOption
+pattern SpreadsheetsValuesUpdateResponseValueRenderOption_UNFORMATTEDVALUE = SpreadsheetsValuesUpdateResponseValueRenderOption "UNFORMATTED_VALUE"
+
+-- | 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\"@. Sheets treats date and time values as decimal values. This lets you perform arithmetic on them in formulas. For more information on interpreting date and time values, see <https://developers.google.com/sheets/api/guides/formats#about_date_time_values About date & time values>.
+pattern SpreadsheetsValuesUpdateResponseValueRenderOption_Formula :: SpreadsheetsValuesUpdateResponseValueRenderOption
+pattern SpreadsheetsValuesUpdateResponseValueRenderOption_Formula = SpreadsheetsValuesUpdateResponseValueRenderOption "FORMULA"
+
+{-# COMPLETE
+  SpreadsheetsValuesUpdateResponseValueRenderOption_FORMATTEDVALUE,
+  SpreadsheetsValuesUpdateResponseValueRenderOption_UNFORMATTEDVALUE,
+  SpreadsheetsValuesUpdateResponseValueRenderOption_Formula,
+  SpreadsheetsValuesUpdateResponseValueRenderOption
+  #-}
+
+-- | How the input data should be interpreted.
+newtype SpreadsheetsValuesUpdateValueInputOption = SpreadsheetsValuesUpdateValueInputOption {fromSpreadsheetsValuesUpdateValueInputOption :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Default input value. This value must not be used.
+pattern SpreadsheetsValuesUpdateValueInputOption_INPUTVALUEOPTIONUNSPECIFIED :: SpreadsheetsValuesUpdateValueInputOption
+pattern SpreadsheetsValuesUpdateValueInputOption_INPUTVALUEOPTIONUNSPECIFIED = SpreadsheetsValuesUpdateValueInputOption "INPUT_VALUE_OPTION_UNSPECIFIED"
+
+-- | The values the user has entered will not be parsed and will be stored as-is.
+pattern SpreadsheetsValuesUpdateValueInputOption_Raw :: SpreadsheetsValuesUpdateValueInputOption
+pattern SpreadsheetsValuesUpdateValueInputOption_Raw = SpreadsheetsValuesUpdateValueInputOption "RAW"
+
+-- | 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.
+pattern SpreadsheetsValuesUpdateValueInputOption_USERENTERED :: SpreadsheetsValuesUpdateValueInputOption
+pattern SpreadsheetsValuesUpdateValueInputOption_USERENTERED = SpreadsheetsValuesUpdateValueInputOption "USER_ENTERED"
+
+{-# COMPLETE
+  SpreadsheetsValuesUpdateValueInputOption_INPUTVALUEOPTIONUNSPECIFIED,
+  SpreadsheetsValuesUpdateValueInputOption_Raw,
+  SpreadsheetsValuesUpdateValueInputOption_USERENTERED,
+  SpreadsheetsValuesUpdateValueInputOption
+  #-}
diff --git a/gen/Gogol/Sheets/Spreadsheets/BatchUpdate.hs b/gen/Gogol/Sheets/Spreadsheets/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/BatchUpdate.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.BatchUpdate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Applies one or more updates to the spreadsheet. Each request is validated before being applied. If any request is not valid then the entire request will fail and nothing will be applied. Some requests have replies to give you some information about how they are applied. The replies will mirror the requests. For example, if you applied 4 updates and the 3rd one had a reply, then the response will have 2 empty replies, the actual reply, and another empty reply, in that order. Due to the collaborative nature of spreadsheets, it is not guaranteed that the spreadsheet will reflect exactly your changes after this completes, however it is guaranteed that the updates in the request will be applied together atomically. Your changes may be altered with respect to collaborator changes. If there are no collaborators, the spreadsheet should reflect your changes.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.batchUpdate@.
+module Gogol.Sheets.Spreadsheets.BatchUpdate
+  ( -- * Resource
+    SheetsSpreadsheetsBatchUpdateResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsBatchUpdate (..),
+    newSheetsSpreadsheetsBatchUpdate,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.batchUpdate@ method which the
+-- 'SheetsSpreadsheetsBatchUpdate' request conforms to.
+type SheetsSpreadsheetsBatchUpdateResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.CaptureMode "spreadsheetId" "batchUpdate" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchUpdateSpreadsheetRequest
+    Core.:> Core.Post '[Core.JSON] BatchUpdateSpreadsheetResponse
+
+-- | Applies one or more updates to the spreadsheet. Each request is validated before being applied. If any request is not valid then the entire request will fail and nothing will be applied. Some requests have replies to give you some information about how they are applied. The replies will mirror the requests. For example, if you applied 4 updates and the 3rd one had a reply, then the response will have 2 empty replies, the actual reply, and another empty reply, in that order. Due to the collaborative nature of spreadsheets, it is not guaranteed that the spreadsheet will reflect exactly your changes after this completes, however it is guaranteed that the updates in the request will be applied together atomically. Your changes may be altered with respect to collaborator changes. If there are no collaborators, the spreadsheet should reflect your changes.
+--
+-- /See:/ 'newSheetsSpreadsheetsBatchUpdate' smart constructor.
+data SheetsSpreadsheetsBatchUpdate = SheetsSpreadsheetsBatchUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: BatchUpdateSpreadsheetRequest,
+    -- | The spreadsheet to apply the updates to.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsBatchUpdate' with the minimum fields required to make a request.
+newSheetsSpreadsheetsBatchUpdate ::
+  -- |  Multipart request metadata. See 'payload'.
+  BatchUpdateSpreadsheetRequest ->
+  -- |  The spreadsheet to apply the updates to. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsBatchUpdate
+newSheetsSpreadsheetsBatchUpdate payload spreadsheetId =
+  SheetsSpreadsheetsBatchUpdate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsBatchUpdate where
+  type
+    Rs SheetsSpreadsheetsBatchUpdate =
+      BatchUpdateSpreadsheetResponse
+  type
+    Scopes SheetsSpreadsheetsBatchUpdate =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsBatchUpdate {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SheetsSpreadsheetsBatchUpdateResource)
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Create.hs b/gen/Gogol/Sheets/Spreadsheets/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Create.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a spreadsheet, returning the newly created spreadsheet.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.create@.
+module Gogol.Sheets.Spreadsheets.Create
+  ( -- * Resource
+    SheetsSpreadsheetsCreateResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsCreate (..),
+    newSheetsSpreadsheetsCreate,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.create@ method which the
+-- 'SheetsSpreadsheetsCreate' request conforms to.
+type SheetsSpreadsheetsCreateResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Spreadsheet
+    Core.:> Core.Post '[Core.JSON] Spreadsheet
+
+-- | Creates a spreadsheet, returning the newly created spreadsheet.
+--
+-- /See:/ 'newSheetsSpreadsheetsCreate' smart constructor.
+data SheetsSpreadsheetsCreate = SheetsSpreadsheetsCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: Spreadsheet,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsCreate' with the minimum fields required to make a request.
+newSheetsSpreadsheetsCreate ::
+  -- |  Multipart request metadata. See 'payload'.
+  Spreadsheet ->
+  SheetsSpreadsheetsCreate
+newSheetsSpreadsheetsCreate payload =
+  SheetsSpreadsheetsCreate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsCreate where
+  type Rs SheetsSpreadsheetsCreate = Spreadsheet
+  type
+    Scopes SheetsSpreadsheetsCreate =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsCreate {..} =
+    go
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SheetsSpreadsheetsCreateResource)
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/DeveloperMetadata/Get.hs b/gen/Gogol/Sheets/Spreadsheets/DeveloperMetadata/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/DeveloperMetadata/Get.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.DeveloperMetadata.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.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 Gogol.Sheets.Spreadsheets.DeveloperMetadata.Get
+  ( -- * Resource
+    SheetsSpreadsheetsDeveloperMetadataGetResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsDeveloperMetadataGet (..),
+    newSheetsSpreadsheetsDeveloperMetadataGet,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.developerMetadata.get@ method which the
+-- 'SheetsSpreadsheetsDeveloperMetadataGet' request conforms to.
+type SheetsSpreadsheetsDeveloperMetadataGetResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "developerMetadata"
+    Core.:> Core.Capture "metadataId" Core.Int32
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.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:/ 'newSheetsSpreadsheetsDeveloperMetadataGet' smart constructor.
+data SheetsSpreadsheetsDeveloperMetadataGet = SheetsSpreadsheetsDeveloperMetadataGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The ID of the developer metadata to retrieve.
+    metadataId :: Core.Int32,
+    -- | The ID of the spreadsheet to retrieve metadata from.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsDeveloperMetadataGet' with the minimum fields required to make a request.
+newSheetsSpreadsheetsDeveloperMetadataGet ::
+  -- |  The ID of the developer metadata to retrieve. See 'metadataId'.
+  Core.Int32 ->
+  -- |  The ID of the spreadsheet to retrieve metadata from. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsDeveloperMetadataGet
+newSheetsSpreadsheetsDeveloperMetadataGet metadataId spreadsheetId =
+  SheetsSpreadsheetsDeveloperMetadataGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      metadataId = metadataId,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsDeveloperMetadataGet where
+  type Rs SheetsSpreadsheetsDeveloperMetadataGet = DeveloperMetadata
+  type
+    Scopes SheetsSpreadsheetsDeveloperMetadataGet =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsDeveloperMetadataGet {..} =
+    go
+      spreadsheetId
+      metadataId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy SheetsSpreadsheetsDeveloperMetadataGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/DeveloperMetadata/Search.hs b/gen/Gogol/Sheets/Spreadsheets/DeveloperMetadata/Search.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/DeveloperMetadata/Search.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.DeveloperMetadata.Search
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.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 Gogol.Sheets.Spreadsheets.DeveloperMetadata.Search
+  ( -- * Resource
+    SheetsSpreadsheetsDeveloperMetadataSearchResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsDeveloperMetadataSearch (..),
+    newSheetsSpreadsheetsDeveloperMetadataSearch,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.developerMetadata.search@ method which the
+-- 'SheetsSpreadsheetsDeveloperMetadataSearch' request conforms to.
+type SheetsSpreadsheetsDeveloperMetadataSearchResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "developerMetadata:search"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] SearchDeveloperMetadataRequest
+    Core.:> Core.Post '[Core.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:/ 'newSheetsSpreadsheetsDeveloperMetadataSearch' smart constructor.
+data SheetsSpreadsheetsDeveloperMetadataSearch = SheetsSpreadsheetsDeveloperMetadataSearch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: SearchDeveloperMetadataRequest,
+    -- | The ID of the spreadsheet to retrieve metadata from.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsDeveloperMetadataSearch' with the minimum fields required to make a request.
+newSheetsSpreadsheetsDeveloperMetadataSearch ::
+  -- |  Multipart request metadata. See 'payload'.
+  SearchDeveloperMetadataRequest ->
+  -- |  The ID of the spreadsheet to retrieve metadata from. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsDeveloperMetadataSearch
+newSheetsSpreadsheetsDeveloperMetadataSearch payload spreadsheetId =
+  SheetsSpreadsheetsDeveloperMetadataSearch
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    SheetsSpreadsheetsDeveloperMetadataSearch
+  where
+  type
+    Rs SheetsSpreadsheetsDeveloperMetadataSearch =
+      SearchDeveloperMetadataResponse
+  type
+    Scopes SheetsSpreadsheetsDeveloperMetadataSearch =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsDeveloperMetadataSearch {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy SheetsSpreadsheetsDeveloperMetadataSearchResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Get.hs b/gen/Gogol/Sheets/Spreadsheets/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Get.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the spreadsheet at the given ID. The caller must specify the spreadsheet ID. By default, data within grids is not returned. You can include grid data in one of 2 ways: * Specify a <https://developers.google.com/sheets/api/guides/field-masks field mask> listing your desired fields using the @fields@ URL parameter in HTTP * Set the includeGridData URL parameter to true. If a field mask is set, the @includeGridData@ parameter is ignored For large spreadsheets, as a best practice, retrieve only the specific spreadsheet fields that you want. To retrieve only subsets of spreadsheet data, use the ranges URL parameter. Ranges are specified using </sheets/api/guides/concepts#cell A1 notation>. You can define a single cell (for example, @A1@) or multiple cells (for example, @A1:D5@). You can also get cells from other sheets within the same spreadsheet (for example, @Sheet2!A1:C4@) or retrieve multiple ranges at once (for example, @?ranges=A1:D5&ranges=Sheet2!A1:C4@). Limiting the range returns only the portions
+-- of the spreadsheet that intersect the requested ranges.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.get@.
+module Gogol.Sheets.Spreadsheets.Get
+  ( -- * Resource
+    SheetsSpreadsheetsGetResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsGet (..),
+    newSheetsSpreadsheetsGet,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.get@ method which the
+-- 'SheetsSpreadsheetsGet' request conforms to.
+type SheetsSpreadsheetsGetResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "includeGridData" Core.Bool
+    Core.:> Core.QueryParams "ranges" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Spreadsheet
+
+-- | Returns the spreadsheet at the given ID. The caller must specify the spreadsheet ID. By default, data within grids is not returned. You can include grid data in one of 2 ways: * Specify a <https://developers.google.com/sheets/api/guides/field-masks field mask> listing your desired fields using the @fields@ URL parameter in HTTP * Set the includeGridData URL parameter to true. If a field mask is set, the @includeGridData@ parameter is ignored For large spreadsheets, as a best practice, retrieve only the specific spreadsheet fields that you want. To retrieve only subsets of spreadsheet data, use the ranges URL parameter. Ranges are specified using </sheets/api/guides/concepts#cell A1 notation>. You can define a single cell (for example, @A1@) or multiple cells (for example, @A1:D5@). You can also get cells from other sheets within the same spreadsheet (for example, @Sheet2!A1:C4@) or retrieve multiple ranges at once (for example, @?ranges=A1:D5&ranges=Sheet2!A1:C4@). Limiting the range returns only the portions
+-- of the spreadsheet that intersect the requested ranges.
+--
+-- /See:/ 'newSheetsSpreadsheetsGet' smart constructor.
+data SheetsSpreadsheetsGet = SheetsSpreadsheetsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | True if grid data should be returned. This parameter is ignored if a field mask was set in the request.
+    includeGridData :: (Core.Maybe Core.Bool),
+    -- | The ranges to retrieve from the spreadsheet.
+    ranges :: (Core.Maybe [Core.Text]),
+    -- | The spreadsheet to request.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsGet' with the minimum fields required to make a request.
+newSheetsSpreadsheetsGet ::
+  -- |  The spreadsheet to request. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsGet
+newSheetsSpreadsheetsGet spreadsheetId =
+  SheetsSpreadsheetsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      includeGridData = Core.Nothing,
+      ranges = Core.Nothing,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsGet where
+  type Rs SheetsSpreadsheetsGet = Spreadsheet
+  type
+    Scopes SheetsSpreadsheetsGet =
+      '[ Drive'FullControl,
+         Drive'File,
+         Drive'Readonly,
+         Spreadsheets'FullControl,
+         Spreadsheets'Readonly
+       ]
+  requestClient SheetsSpreadsheetsGet {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      includeGridData
+      (ranges Core.^. Core._Default)
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SheetsSpreadsheetsGetResource)
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/GetByDataFilter.hs b/gen/Gogol/Sheets/Spreadsheets/GetByDataFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/GetByDataFilter.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.GetByDataFilter
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.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 returns the portions of the spreadsheet that intersect ranges matched by any of the filters. By default, data within grids is not returned. You can include grid data one of 2 ways: * Specify a <https://developers.google.com/sheets/api/guides/field-masks 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, as a best practice, retrieve only the specific spreadsheet fields that you want.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.getByDataFilter@.
+module Gogol.Sheets.Spreadsheets.GetByDataFilter
+  ( -- * Resource
+    SheetsSpreadsheetsGetByDataFilterResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsGetByDataFilter (..),
+    newSheetsSpreadsheetsGetByDataFilter,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.getByDataFilter@ method which the
+-- 'SheetsSpreadsheetsGetByDataFilter' request conforms to.
+type SheetsSpreadsheetsGetByDataFilterResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.CaptureMode "spreadsheetId" "getByDataFilter" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] GetSpreadsheetByDataFilterRequest
+    Core.:> Core.Post '[Core.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 returns the portions of the spreadsheet that intersect ranges matched by any of the filters. By default, data within grids is not returned. You can include grid data one of 2 ways: * Specify a <https://developers.google.com/sheets/api/guides/field-masks 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, as a best practice, retrieve only the specific spreadsheet fields that you want.
+--
+-- /See:/ 'newSheetsSpreadsheetsGetByDataFilter' smart constructor.
+data SheetsSpreadsheetsGetByDataFilter = SheetsSpreadsheetsGetByDataFilter
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: GetSpreadsheetByDataFilterRequest,
+    -- | The spreadsheet to request.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsGetByDataFilter' with the minimum fields required to make a request.
+newSheetsSpreadsheetsGetByDataFilter ::
+  -- |  Multipart request metadata. See 'payload'.
+  GetSpreadsheetByDataFilterRequest ->
+  -- |  The spreadsheet to request. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsGetByDataFilter
+newSheetsSpreadsheetsGetByDataFilter payload spreadsheetId =
+  SheetsSpreadsheetsGetByDataFilter
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsGetByDataFilter where
+  type Rs SheetsSpreadsheetsGetByDataFilter = Spreadsheet
+  type
+    Scopes SheetsSpreadsheetsGetByDataFilter =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsGetByDataFilter {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy SheetsSpreadsheetsGetByDataFilterResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Sheets/CopyTo.hs b/gen/Gogol/Sheets/Spreadsheets/Sheets/CopyTo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Sheets/CopyTo.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Sheets.CopyTo
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Copies a single sheet from a spreadsheet to another spreadsheet. Returns the properties of the newly created sheet.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.sheets.copyTo@.
+module Gogol.Sheets.Spreadsheets.Sheets.CopyTo
+  ( -- * Resource
+    SheetsSpreadsheetsSheetsCopyToResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsSheetsCopyTo (..),
+    newSheetsSpreadsheetsSheetsCopyTo,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.sheets.copyTo@ method which the
+-- 'SheetsSpreadsheetsSheetsCopyTo' request conforms to.
+type SheetsSpreadsheetsSheetsCopyToResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "sheets"
+    Core.:> Core.CaptureMode "sheetId" "copyTo" Core.Int32
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] CopySheetToAnotherSpreadsheetRequest
+    Core.:> Core.Post '[Core.JSON] SheetProperties
+
+-- | Copies a single sheet from a spreadsheet to another spreadsheet. Returns the properties of the newly created sheet.
+--
+-- /See:/ 'newSheetsSpreadsheetsSheetsCopyTo' smart constructor.
+data SheetsSpreadsheetsSheetsCopyTo = SheetsSpreadsheetsSheetsCopyTo
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: CopySheetToAnotherSpreadsheetRequest,
+    -- | The ID of the sheet to copy.
+    sheetId :: Core.Int32,
+    -- | The ID of the spreadsheet containing the sheet to copy.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsSheetsCopyTo' with the minimum fields required to make a request.
+newSheetsSpreadsheetsSheetsCopyTo ::
+  -- |  Multipart request metadata. See 'payload'.
+  CopySheetToAnotherSpreadsheetRequest ->
+  -- |  The ID of the sheet to copy. See 'sheetId'.
+  Core.Int32 ->
+  -- |  The ID of the spreadsheet containing the sheet to copy. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsSheetsCopyTo
+newSheetsSpreadsheetsSheetsCopyTo payload sheetId spreadsheetId =
+  SheetsSpreadsheetsSheetsCopyTo
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      sheetId = sheetId,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsSheetsCopyTo where
+  type Rs SheetsSpreadsheetsSheetsCopyTo = SheetProperties
+  type
+    Scopes SheetsSpreadsheetsSheetsCopyTo =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsSheetsCopyTo {..} =
+    go
+      spreadsheetId
+      sheetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SheetsSpreadsheetsSheetsCopyToResource)
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/Append.hs b/gen/Gogol/Sheets/Spreadsheets/Values/Append.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/Append.hs
@@ -0,0 +1,158 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.Append
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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 </sheets/api/guides/values#appending_values guide> and </sheets/api/samples/writing#append_values sample code> 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 the sheet (column-wise or row-wise), it does not influence what cell the data starts being written to.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.append@.
+module Gogol.Sheets.Spreadsheets.Values.Append
+  ( -- * Resource
+    SheetsSpreadsheetsValuesAppendResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesAppend (..),
+    newSheetsSpreadsheetsValuesAppend,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.append@ method which the
+-- 'SheetsSpreadsheetsValuesAppend' request conforms to.
+type SheetsSpreadsheetsValuesAppendResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values"
+    Core.:> Core.CaptureMode "range" "append" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "includeValuesInResponse" Core.Bool
+    Core.:> Core.QueryParam
+              "insertDataOption"
+              SpreadsheetsValuesAppendInsertDataOption
+    Core.:> Core.QueryParam
+              "responseDateTimeRenderOption"
+              SpreadsheetsValuesAppendResponseDateTimeRenderOption
+    Core.:> Core.QueryParam
+              "responseValueRenderOption"
+              SpreadsheetsValuesAppendResponseValueRenderOption
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam
+              "valueInputOption"
+              SpreadsheetsValuesAppendValueInputOption
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ValueRange
+    Core.:> Core.Post '[Core.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 </sheets/api/guides/values#appending_values guide> and </sheets/api/samples/writing#append_values sample code> 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 the sheet (column-wise or row-wise), it does not influence what cell the data starts being written to.
+--
+-- /See:/ 'newSheetsSpreadsheetsValuesAppend' smart constructor.
+data SheetsSpreadsheetsValuesAppend = SheetsSpreadsheetsValuesAppend
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Determines if the update response should include the values of the cells that were appended. By default, responses do not include the updated values.
+    includeValuesInResponse :: (Core.Maybe Core.Bool),
+    -- | How the input data should be inserted.
+    insertDataOption :: (Core.Maybe SpreadsheetsValuesAppendInsertDataOption),
+    -- | Multipart request metadata.
+    payload :: ValueRange,
+    -- | The </sheets/api/guides/concepts#cell A1 notation> of a range to search for a logical table of data. Values are appended after the last row of the table.
+    range :: Core.Text,
+    -- | 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 SERIAL_NUMBER.
+    responseDateTimeRenderOption :: (Core.Maybe SpreadsheetsValuesAppendResponseDateTimeRenderOption),
+    -- | Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
+    responseValueRenderOption :: (Core.Maybe SpreadsheetsValuesAppendResponseValueRenderOption),
+    -- | The ID of the spreadsheet to update.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | How the input data should be interpreted.
+    valueInputOption :: (Core.Maybe SpreadsheetsValuesAppendValueInputOption)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesAppend' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesAppend ::
+  -- |  Multipart request metadata. See 'payload'.
+  ValueRange ->
+  -- |  The </sheets/api/guides/concepts#cell A1 notation> of a range to search for a logical table of data. Values are appended after the last row of the table. See 'range'.
+  Core.Text ->
+  -- |  The ID of the spreadsheet to update. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesAppend
+newSheetsSpreadsheetsValuesAppend payload range spreadsheetId =
+  SheetsSpreadsheetsValuesAppend
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      includeValuesInResponse = Core.Nothing,
+      insertDataOption = Core.Nothing,
+      payload = payload,
+      range = range,
+      responseDateTimeRenderOption = Core.Nothing,
+      responseValueRenderOption = Core.Nothing,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      valueInputOption = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsValuesAppend where
+  type Rs SheetsSpreadsheetsValuesAppend = AppendValuesResponse
+  type
+    Scopes SheetsSpreadsheetsValuesAppend =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsValuesAppend {..} =
+    go
+      spreadsheetId
+      range
+      xgafv
+      accessToken
+      callback
+      includeValuesInResponse
+      insertDataOption
+      responseDateTimeRenderOption
+      responseValueRenderOption
+      uploadType
+      uploadProtocol
+      valueInputOption
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SheetsSpreadsheetsValuesAppendResource)
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/BatchClear.hs b/gen/Gogol/Sheets/Spreadsheets/Values/BatchClear.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/BatchClear.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.BatchClear
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.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 ranges. Only values are cleared -- all other properties of the cell (such as formatting and data validation) are kept.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchClear@.
+module Gogol.Sheets.Spreadsheets.Values.BatchClear
+  ( -- * Resource
+    SheetsSpreadsheetsValuesBatchClearResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesBatchClear (..),
+    newSheetsSpreadsheetsValuesBatchClear,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.batchClear@ method which the
+-- 'SheetsSpreadsheetsValuesBatchClear' request conforms to.
+type SheetsSpreadsheetsValuesBatchClearResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values:batchClear"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchClearValuesRequest
+    Core.:> Core.Post '[Core.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 cleared -- all other properties of the cell (such as formatting and data validation) are kept.
+--
+-- /See:/ 'newSheetsSpreadsheetsValuesBatchClear' smart constructor.
+data SheetsSpreadsheetsValuesBatchClear = SheetsSpreadsheetsValuesBatchClear
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: BatchClearValuesRequest,
+    -- | The ID of the spreadsheet to update.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesBatchClear' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesBatchClear ::
+  -- |  Multipart request metadata. See 'payload'.
+  BatchClearValuesRequest ->
+  -- |  The ID of the spreadsheet to update. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesBatchClear
+newSheetsSpreadsheetsValuesBatchClear payload spreadsheetId =
+  SheetsSpreadsheetsValuesBatchClear
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsValuesBatchClear where
+  type
+    Rs SheetsSpreadsheetsValuesBatchClear =
+      BatchClearValuesResponse
+  type
+    Scopes SheetsSpreadsheetsValuesBatchClear =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsValuesBatchClear {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy SheetsSpreadsheetsValuesBatchClearResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/BatchClearByDataFilter.hs b/gen/Gogol/Sheets/Spreadsheets/Values/BatchClearByDataFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/BatchClearByDataFilter.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.BatchClearByDataFilter
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.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 Gogol.Sheets.Spreadsheets.Values.BatchClearByDataFilter
+  ( -- * Resource
+    SheetsSpreadsheetsValuesBatchClearByDataFilterResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesBatchClearByDataFilter (..),
+    newSheetsSpreadsheetsValuesBatchClearByDataFilter,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.batchClearByDataFilter@ method which the
+-- 'SheetsSpreadsheetsValuesBatchClearByDataFilter' request conforms to.
+type SheetsSpreadsheetsValuesBatchClearByDataFilterResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values:batchClearByDataFilter"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchClearValuesByDataFilterRequest
+    Core.:> Core.Post '[Core.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:/ 'newSheetsSpreadsheetsValuesBatchClearByDataFilter' smart constructor.
+data SheetsSpreadsheetsValuesBatchClearByDataFilter = SheetsSpreadsheetsValuesBatchClearByDataFilter
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: BatchClearValuesByDataFilterRequest,
+    -- | The ID of the spreadsheet to update.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesBatchClearByDataFilter' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesBatchClearByDataFilter ::
+  -- |  Multipart request metadata. See 'payload'.
+  BatchClearValuesByDataFilterRequest ->
+  -- |  The ID of the spreadsheet to update. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesBatchClearByDataFilter
+newSheetsSpreadsheetsValuesBatchClearByDataFilter
+  payload
+  spreadsheetId =
+    SheetsSpreadsheetsValuesBatchClearByDataFilter
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        payload = payload,
+        spreadsheetId = spreadsheetId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    SheetsSpreadsheetsValuesBatchClearByDataFilter
+  where
+  type
+    Rs SheetsSpreadsheetsValuesBatchClearByDataFilter =
+      BatchClearValuesByDataFilterResponse
+  type
+    Scopes SheetsSpreadsheetsValuesBatchClearByDataFilter =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsValuesBatchClearByDataFilter {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy SheetsSpreadsheetsValuesBatchClearByDataFilterResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/BatchGet.hs b/gen/Gogol/Sheets/Spreadsheets/Values/BatchGet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/BatchGet.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.BatchGet
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns one or more ranges of values from a spreadsheet. The caller must specify the spreadsheet ID and one or more ranges.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchGet@.
+module Gogol.Sheets.Spreadsheets.Values.BatchGet
+  ( -- * Resource
+    SheetsSpreadsheetsValuesBatchGetResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesBatchGet (..),
+    newSheetsSpreadsheetsValuesBatchGet,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.batchGet@ method which the
+-- 'SheetsSpreadsheetsValuesBatchGet' request conforms to.
+type SheetsSpreadsheetsValuesBatchGetResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values:batchGet"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam
+              "dateTimeRenderOption"
+              SpreadsheetsValuesBatchGetDateTimeRenderOption
+    Core.:> Core.QueryParam
+              "majorDimension"
+              SpreadsheetsValuesBatchGetMajorDimension
+    Core.:> Core.QueryParams "ranges" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam
+              "valueRenderOption"
+              SpreadsheetsValuesBatchGetValueRenderOption
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] BatchGetValuesResponse
+
+-- | Returns one or more ranges of values from a spreadsheet. The caller must specify the spreadsheet ID and one or more ranges.
+--
+-- /See:/ 'newSheetsSpreadsheetsValuesBatchGet' smart constructor.
+data SheetsSpreadsheetsValuesBatchGet = SheetsSpreadsheetsValuesBatchGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | 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 SERIAL/NUMBER.
+    dateTimeRenderOption :: (Core.Maybe SpreadsheetsValuesBatchGetDateTimeRenderOption),
+    -- | The major dimension that results should use. For example, if the spreadsheet data is: @A1=1,B1=2,A2=3,B2=4@, then requesting @ranges=[\"A1:B2\"],majorDimension=ROWS@ returns @[[1,2],[3,4]]@, whereas requesting @ranges=[\"A1:B2\"],majorDimension=COLUMNS@ returns @[[1,3],[2,4]]@.
+    majorDimension :: (Core.Maybe SpreadsheetsValuesBatchGetMajorDimension),
+    -- | The </sheets/api/guides/concepts#cell A1 notation or R1C1 notation> of the range to retrieve values from.
+    ranges :: (Core.Maybe [Core.Text]),
+    -- | The ID of the spreadsheet to retrieve data from.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | How values should be represented in the output. The default render option is ValueRenderOption.FORMATTED_VALUE.
+    valueRenderOption :: (Core.Maybe SpreadsheetsValuesBatchGetValueRenderOption)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesBatchGet' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesBatchGet ::
+  -- |  The ID of the spreadsheet to retrieve data from. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesBatchGet
+newSheetsSpreadsheetsValuesBatchGet spreadsheetId =
+  SheetsSpreadsheetsValuesBatchGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      dateTimeRenderOption = Core.Nothing,
+      majorDimension = Core.Nothing,
+      ranges = Core.Nothing,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      valueRenderOption = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsValuesBatchGet where
+  type Rs SheetsSpreadsheetsValuesBatchGet = BatchGetValuesResponse
+  type
+    Scopes SheetsSpreadsheetsValuesBatchGet =
+      '[ Drive'FullControl,
+         Drive'File,
+         Drive'Readonly,
+         Spreadsheets'FullControl,
+         Spreadsheets'Readonly
+       ]
+  requestClient SheetsSpreadsheetsValuesBatchGet {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      dateTimeRenderOption
+      majorDimension
+      (ranges Core.^. Core._Default)
+      uploadType
+      uploadProtocol
+      valueRenderOption
+      (Core.Just Core.AltJSON)
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SheetsSpreadsheetsValuesBatchGetResource)
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/BatchGetByDataFilter.hs b/gen/Gogol/Sheets/Spreadsheets/Values/BatchGetByDataFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/BatchGetByDataFilter.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.BatchGetByDataFilter
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.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 Gogol.Sheets.Spreadsheets.Values.BatchGetByDataFilter
+  ( -- * Resource
+    SheetsSpreadsheetsValuesBatchGetByDataFilterResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesBatchGetByDataFilter (..),
+    newSheetsSpreadsheetsValuesBatchGetByDataFilter,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.batchGetByDataFilter@ method which the
+-- 'SheetsSpreadsheetsValuesBatchGetByDataFilter' request conforms to.
+type SheetsSpreadsheetsValuesBatchGetByDataFilterResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values:batchGetByDataFilter"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchGetValuesByDataFilterRequest
+    Core.:> Core.Post '[Core.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:/ 'newSheetsSpreadsheetsValuesBatchGetByDataFilter' smart constructor.
+data SheetsSpreadsheetsValuesBatchGetByDataFilter = SheetsSpreadsheetsValuesBatchGetByDataFilter
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: BatchGetValuesByDataFilterRequest,
+    -- | The ID of the spreadsheet to retrieve data from.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesBatchGetByDataFilter' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesBatchGetByDataFilter ::
+  -- |  Multipart request metadata. See 'payload'.
+  BatchGetValuesByDataFilterRequest ->
+  -- |  The ID of the spreadsheet to retrieve data from. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesBatchGetByDataFilter
+newSheetsSpreadsheetsValuesBatchGetByDataFilter
+  payload
+  spreadsheetId =
+    SheetsSpreadsheetsValuesBatchGetByDataFilter
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        payload = payload,
+        spreadsheetId = spreadsheetId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    SheetsSpreadsheetsValuesBatchGetByDataFilter
+  where
+  type
+    Rs SheetsSpreadsheetsValuesBatchGetByDataFilter =
+      BatchGetValuesByDataFilterResponse
+  type
+    Scopes SheetsSpreadsheetsValuesBatchGetByDataFilter =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsValuesBatchGetByDataFilter {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy SheetsSpreadsheetsValuesBatchGetByDataFilterResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/BatchUpdate.hs b/gen/Gogol/Sheets/Spreadsheets/Values/BatchUpdate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/BatchUpdate.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.BatchUpdate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets values in one or more ranges of a spreadsheet. The caller must specify the spreadsheet ID, a valueInputOption, and one or more ValueRanges.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchUpdate@.
+module Gogol.Sheets.Spreadsheets.Values.BatchUpdate
+  ( -- * Resource
+    SheetsSpreadsheetsValuesBatchUpdateResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesBatchUpdate (..),
+    newSheetsSpreadsheetsValuesBatchUpdate,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.batchUpdate@ method which the
+-- 'SheetsSpreadsheetsValuesBatchUpdate' request conforms to.
+type SheetsSpreadsheetsValuesBatchUpdateResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values:batchUpdate"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchUpdateValuesRequest
+    Core.:> Core.Post '[Core.JSON] BatchUpdateValuesResponse
+
+-- | Sets values in one or more ranges of a spreadsheet. The caller must specify the spreadsheet ID, a valueInputOption, and one or more ValueRanges.
+--
+-- /See:/ 'newSheetsSpreadsheetsValuesBatchUpdate' smart constructor.
+data SheetsSpreadsheetsValuesBatchUpdate = SheetsSpreadsheetsValuesBatchUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: BatchUpdateValuesRequest,
+    -- | The ID of the spreadsheet to update.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesBatchUpdate' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesBatchUpdate ::
+  -- |  Multipart request metadata. See 'payload'.
+  BatchUpdateValuesRequest ->
+  -- |  The ID of the spreadsheet to update. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesBatchUpdate
+newSheetsSpreadsheetsValuesBatchUpdate payload spreadsheetId =
+  SheetsSpreadsheetsValuesBatchUpdate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsValuesBatchUpdate where
+  type
+    Rs SheetsSpreadsheetsValuesBatchUpdate =
+      BatchUpdateValuesResponse
+  type
+    Scopes SheetsSpreadsheetsValuesBatchUpdate =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsValuesBatchUpdate {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy SheetsSpreadsheetsValuesBatchUpdateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/BatchUpdateByDataFilter.hs b/gen/Gogol/Sheets/Spreadsheets/Values/BatchUpdateByDataFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/BatchUpdateByDataFilter.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.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 Gogol.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter
+  ( -- * Resource
+    SheetsSpreadsheetsValuesBatchUpdateByDataFilterResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesBatchUpdateByDataFilter (..),
+    newSheetsSpreadsheetsValuesBatchUpdateByDataFilter,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.batchUpdateByDataFilter@ method which the
+-- 'SheetsSpreadsheetsValuesBatchUpdateByDataFilter' request conforms to.
+type SheetsSpreadsheetsValuesBatchUpdateByDataFilterResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values:batchUpdateByDataFilter"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] BatchUpdateValuesByDataFilterRequest
+    Core.:> Core.Post '[Core.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:/ 'newSheetsSpreadsheetsValuesBatchUpdateByDataFilter' smart constructor.
+data SheetsSpreadsheetsValuesBatchUpdateByDataFilter = SheetsSpreadsheetsValuesBatchUpdateByDataFilter
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: BatchUpdateValuesByDataFilterRequest,
+    -- | The ID of the spreadsheet to update.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesBatchUpdateByDataFilter' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesBatchUpdateByDataFilter ::
+  -- |  Multipart request metadata. See 'payload'.
+  BatchUpdateValuesByDataFilterRequest ->
+  -- |  The ID of the spreadsheet to update. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesBatchUpdateByDataFilter
+newSheetsSpreadsheetsValuesBatchUpdateByDataFilter
+  payload
+  spreadsheetId =
+    SheetsSpreadsheetsValuesBatchUpdateByDataFilter
+      { xgafv =
+          Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        payload = payload,
+        spreadsheetId = spreadsheetId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing
+      }
+
+instance
+  Core.GoogleRequest
+    SheetsSpreadsheetsValuesBatchUpdateByDataFilter
+  where
+  type
+    Rs SheetsSpreadsheetsValuesBatchUpdateByDataFilter =
+      BatchUpdateValuesByDataFilterResponse
+  type
+    Scopes SheetsSpreadsheetsValuesBatchUpdateByDataFilter =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsValuesBatchUpdateByDataFilter {..} =
+    go
+      spreadsheetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy SheetsSpreadsheetsValuesBatchUpdateByDataFilterResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/Clear.hs b/gen/Gogol/Sheets/Spreadsheets/Values/Clear.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/Clear.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.Clear
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Clears values from a spreadsheet. The caller must specify the spreadsheet ID and range. 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.clear@.
+module Gogol.Sheets.Spreadsheets.Values.Clear
+  ( -- * Resource
+    SheetsSpreadsheetsValuesClearResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesClear (..),
+    newSheetsSpreadsheetsValuesClear,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.clear@ method which the
+-- 'SheetsSpreadsheetsValuesClear' request conforms to.
+type SheetsSpreadsheetsValuesClearResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values"
+    Core.:> Core.CaptureMode "range" "clear" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ClearValuesRequest
+    Core.:> Core.Post '[Core.JSON] ClearValuesResponse
+
+-- | Clears values from a spreadsheet. The caller must specify the spreadsheet ID and range. Only values are cleared -- all other properties of the cell (such as formatting, data validation, etc..) are kept.
+--
+-- /See:/ 'newSheetsSpreadsheetsValuesClear' smart constructor.
+data SheetsSpreadsheetsValuesClear = SheetsSpreadsheetsValuesClear
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: ClearValuesRequest,
+    -- | The </sheets/api/guides/concepts#cell A1 notation or R1C1 notation> of the values to clear.
+    range :: Core.Text,
+    -- | The ID of the spreadsheet to update.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesClear' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesClear ::
+  -- |  Multipart request metadata. See 'payload'.
+  ClearValuesRequest ->
+  -- |  The </sheets/api/guides/concepts#cell A1 notation or R1C1 notation> of the values to clear. See 'range'.
+  Core.Text ->
+  -- |  The ID of the spreadsheet to update. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesClear
+newSheetsSpreadsheetsValuesClear payload range spreadsheetId =
+  SheetsSpreadsheetsValuesClear
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      range = range,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsValuesClear where
+  type Rs SheetsSpreadsheetsValuesClear = ClearValuesResponse
+  type
+    Scopes SheetsSpreadsheetsValuesClear =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsValuesClear {..} =
+    go
+      spreadsheetId
+      range
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SheetsSpreadsheetsValuesClearResource)
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/Get.hs b/gen/Gogol/Sheets/Spreadsheets/Values/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/Get.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a range of values from a spreadsheet. The caller must specify the spreadsheet ID and a range.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.get@.
+module Gogol.Sheets.Spreadsheets.Values.Get
+  ( -- * Resource
+    SheetsSpreadsheetsValuesGetResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesGet (..),
+    newSheetsSpreadsheetsValuesGet,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.get@ method which the
+-- 'SheetsSpreadsheetsValuesGet' request conforms to.
+type SheetsSpreadsheetsValuesGetResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values"
+    Core.:> Core.Capture "range" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam
+              "dateTimeRenderOption"
+              SpreadsheetsValuesGetDateTimeRenderOption
+    Core.:> Core.QueryParam
+              "majorDimension"
+              SpreadsheetsValuesGetMajorDimension
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam
+              "valueRenderOption"
+              SpreadsheetsValuesGetValueRenderOption
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ValueRange
+
+-- | Returns a range of values from a spreadsheet. The caller must specify the spreadsheet ID and a range.
+--
+-- /See:/ 'newSheetsSpreadsheetsValuesGet' smart constructor.
+data SheetsSpreadsheetsValuesGet = SheetsSpreadsheetsValuesGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | 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 SERIAL/NUMBER.
+    dateTimeRenderOption :: (Core.Maybe SpreadsheetsValuesGetDateTimeRenderOption),
+    -- | The major dimension that results should use. For example, if the spreadsheet data in Sheet1 is: @A1=1,B1=2,A2=3,B2=4@, then requesting @range=Sheet1!A1:B2?majorDimension=ROWS@ returns @[[1,2],[3,4]]@, whereas requesting @range=Sheet1!A1:B2?majorDimension=COLUMNS@ returns @[[1,3],[2,4]]@.
+    majorDimension :: (Core.Maybe SpreadsheetsValuesGetMajorDimension),
+    -- | The </sheets/api/guides/concepts#cell A1 notation or R1C1 notation> of the range to retrieve values from.
+    range :: Core.Text,
+    -- | The ID of the spreadsheet to retrieve data from.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | How values should be represented in the output. The default render option is FORMATTED_VALUE.
+    valueRenderOption :: (Core.Maybe SpreadsheetsValuesGetValueRenderOption)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesGet' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesGet ::
+  -- |  The </sheets/api/guides/concepts#cell A1 notation or R1C1 notation> of the range to retrieve values from. See 'range'.
+  Core.Text ->
+  -- |  The ID of the spreadsheet to retrieve data from. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesGet
+newSheetsSpreadsheetsValuesGet range spreadsheetId =
+  SheetsSpreadsheetsValuesGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      dateTimeRenderOption = Core.Nothing,
+      majorDimension = Core.Nothing,
+      range = range,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      valueRenderOption = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsValuesGet where
+  type Rs SheetsSpreadsheetsValuesGet = ValueRange
+  type
+    Scopes SheetsSpreadsheetsValuesGet =
+      '[ Drive'FullControl,
+         Drive'File,
+         Drive'Readonly,
+         Spreadsheets'FullControl,
+         Spreadsheets'Readonly
+       ]
+  requestClient SheetsSpreadsheetsValuesGet {..} =
+    go
+      spreadsheetId
+      range
+      xgafv
+      accessToken
+      callback
+      dateTimeRenderOption
+      majorDimension
+      uploadType
+      uploadProtocol
+      valueRenderOption
+      (Core.Just Core.AltJSON)
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SheetsSpreadsheetsValuesGetResource)
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Spreadsheets/Values/Update.hs b/gen/Gogol/Sheets/Spreadsheets/Values/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Spreadsheets/Values/Update.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Spreadsheets.Values.Update
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets values in a range of a spreadsheet. The caller must specify the spreadsheet ID, range, and a valueInputOption.
+--
+-- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.update@.
+module Gogol.Sheets.Spreadsheets.Values.Update
+  ( -- * Resource
+    SheetsSpreadsheetsValuesUpdateResource,
+
+    -- ** Constructing a Request
+    SheetsSpreadsheetsValuesUpdate (..),
+    newSheetsSpreadsheetsValuesUpdate,
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Types
+
+-- | A resource alias for @sheets.spreadsheets.values.update@ method which the
+-- 'SheetsSpreadsheetsValuesUpdate' request conforms to.
+type SheetsSpreadsheetsValuesUpdateResource =
+  "v4"
+    Core.:> "spreadsheets"
+    Core.:> Core.Capture "spreadsheetId" Core.Text
+    Core.:> "values"
+    Core.:> Core.Capture "range" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "includeValuesInResponse" Core.Bool
+    Core.:> Core.QueryParam
+              "responseDateTimeRenderOption"
+              SpreadsheetsValuesUpdateResponseDateTimeRenderOption
+    Core.:> Core.QueryParam
+              "responseValueRenderOption"
+              SpreadsheetsValuesUpdateResponseValueRenderOption
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam
+              "valueInputOption"
+              SpreadsheetsValuesUpdateValueInputOption
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] ValueRange
+    Core.:> Core.Put '[Core.JSON] UpdateValuesResponse
+
+-- | Sets values in a range of a spreadsheet. The caller must specify the spreadsheet ID, range, and a valueInputOption.
+--
+-- /See:/ 'newSheetsSpreadsheetsValuesUpdate' smart constructor.
+data SheetsSpreadsheetsValuesUpdate = SheetsSpreadsheetsValuesUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Determines if the update response should include the values of the cells that were updated. By default, responses do not include the updated values. If the range to write was larger than the range actually written, the response includes all values in the requested range (excluding trailing empty rows and columns).
+    includeValuesInResponse :: (Core.Maybe Core.Bool),
+    -- | Multipart request metadata.
+    payload :: ValueRange,
+    -- | The </sheets/api/guides/concepts#cell A1 notation> of the values to update.
+    range :: Core.Text,
+    -- | 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 SERIAL_NUMBER.
+    responseDateTimeRenderOption :: (Core.Maybe SpreadsheetsValuesUpdateResponseDateTimeRenderOption),
+    -- | Determines how values in the response should be rendered. The default render option is FORMATTED_VALUE.
+    responseValueRenderOption :: (Core.Maybe SpreadsheetsValuesUpdateResponseValueRenderOption),
+    -- | The ID of the spreadsheet to update.
+    spreadsheetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | How the input data should be interpreted.
+    valueInputOption :: (Core.Maybe SpreadsheetsValuesUpdateValueInputOption)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SheetsSpreadsheetsValuesUpdate' with the minimum fields required to make a request.
+newSheetsSpreadsheetsValuesUpdate ::
+  -- |  Multipart request metadata. See 'payload'.
+  ValueRange ->
+  -- |  The </sheets/api/guides/concepts#cell A1 notation> of the values to update. See 'range'.
+  Core.Text ->
+  -- |  The ID of the spreadsheet to update. See 'spreadsheetId'.
+  Core.Text ->
+  SheetsSpreadsheetsValuesUpdate
+newSheetsSpreadsheetsValuesUpdate payload range spreadsheetId =
+  SheetsSpreadsheetsValuesUpdate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      includeValuesInResponse = Core.Nothing,
+      payload = payload,
+      range = range,
+      responseDateTimeRenderOption = Core.Nothing,
+      responseValueRenderOption = Core.Nothing,
+      spreadsheetId = spreadsheetId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      valueInputOption = Core.Nothing
+    }
+
+instance Core.GoogleRequest SheetsSpreadsheetsValuesUpdate where
+  type Rs SheetsSpreadsheetsValuesUpdate = UpdateValuesResponse
+  type
+    Scopes SheetsSpreadsheetsValuesUpdate =
+      '[Drive'FullControl, Drive'File, Spreadsheets'FullControl]
+  requestClient SheetsSpreadsheetsValuesUpdate {..} =
+    go
+      spreadsheetId
+      range
+      xgafv
+      accessToken
+      callback
+      includeValuesInResponse
+      responseDateTimeRenderOption
+      responseValueRenderOption
+      uploadType
+      uploadProtocol
+      valueInputOption
+      (Core.Just Core.AltJSON)
+      payload
+      sheetsService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SheetsSpreadsheetsValuesUpdateResource)
+          Core.mempty
diff --git a/gen/Gogol/Sheets/Types.hs b/gen/Gogol/Sheets/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Sheets/Types.hs
@@ -0,0 +1,1362 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Sheets.Types
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.Sheets.Types
+  ( -- * Configuration
+    sheetsService,
+
+    -- * OAuth Scopes
+    Drive'FullControl,
+    Drive'File,
+    Drive'Readonly,
+    Spreadsheets'FullControl,
+    Spreadsheets'Readonly,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** AddBandingRequest
+    AddBandingRequest (..),
+    newAddBandingRequest,
+
+    -- ** AddBandingResponse
+    AddBandingResponse (..),
+    newAddBandingResponse,
+
+    -- ** AddChartRequest
+    AddChartRequest (..),
+    newAddChartRequest,
+
+    -- ** AddChartResponse
+    AddChartResponse (..),
+    newAddChartResponse,
+
+    -- ** AddConditionalFormatRuleRequest
+    AddConditionalFormatRuleRequest (..),
+    newAddConditionalFormatRuleRequest,
+
+    -- ** AddDataSourceRequest
+    AddDataSourceRequest (..),
+    newAddDataSourceRequest,
+
+    -- ** AddDataSourceResponse
+    AddDataSourceResponse (..),
+    newAddDataSourceResponse,
+
+    -- ** AddDimensionGroupRequest
+    AddDimensionGroupRequest (..),
+    newAddDimensionGroupRequest,
+
+    -- ** AddDimensionGroupResponse
+    AddDimensionGroupResponse (..),
+    newAddDimensionGroupResponse,
+
+    -- ** AddFilterViewRequest
+    AddFilterViewRequest (..),
+    newAddFilterViewRequest,
+
+    -- ** AddFilterViewResponse
+    AddFilterViewResponse (..),
+    newAddFilterViewResponse,
+
+    -- ** AddNamedRangeRequest
+    AddNamedRangeRequest (..),
+    newAddNamedRangeRequest,
+
+    -- ** AddNamedRangeResponse
+    AddNamedRangeResponse (..),
+    newAddNamedRangeResponse,
+
+    -- ** AddProtectedRangeRequest
+    AddProtectedRangeRequest (..),
+    newAddProtectedRangeRequest,
+
+    -- ** AddProtectedRangeResponse
+    AddProtectedRangeResponse (..),
+    newAddProtectedRangeResponse,
+
+    -- ** AddSheetRequest
+    AddSheetRequest (..),
+    newAddSheetRequest,
+
+    -- ** AddSheetResponse
+    AddSheetResponse (..),
+    newAddSheetResponse,
+
+    -- ** AddSlicerRequest
+    AddSlicerRequest (..),
+    newAddSlicerRequest,
+
+    -- ** AddSlicerResponse
+    AddSlicerResponse (..),
+    newAddSlicerResponse,
+
+    -- ** AppendCellsRequest
+    AppendCellsRequest (..),
+    newAppendCellsRequest,
+
+    -- ** AppendDimensionRequest
+    AppendDimensionRequest (..),
+    newAppendDimensionRequest,
+
+    -- ** AppendDimensionRequest_Dimension
+    AppendDimensionRequest_Dimension (..),
+
+    -- ** AppendValuesResponse
+    AppendValuesResponse (..),
+    newAppendValuesResponse,
+
+    -- ** AutoFillRequest
+    AutoFillRequest (..),
+    newAutoFillRequest,
+
+    -- ** AutoResizeDimensionsRequest
+    AutoResizeDimensionsRequest (..),
+    newAutoResizeDimensionsRequest,
+
+    -- ** BandedRange
+    BandedRange (..),
+    newBandedRange,
+
+    -- ** BandingProperties
+    BandingProperties (..),
+    newBandingProperties,
+
+    -- ** BaselineValueFormat
+    BaselineValueFormat (..),
+    newBaselineValueFormat,
+
+    -- ** BaselineValueFormat_ComparisonType
+    BaselineValueFormat_ComparisonType (..),
+
+    -- ** BasicChartAxis
+    BasicChartAxis (..),
+    newBasicChartAxis,
+
+    -- ** BasicChartAxis_Position
+    BasicChartAxis_Position (..),
+
+    -- ** BasicChartDomain
+    BasicChartDomain (..),
+    newBasicChartDomain,
+
+    -- ** BasicChartSeries
+    BasicChartSeries (..),
+    newBasicChartSeries,
+
+    -- ** BasicChartSeries_TargetAxis
+    BasicChartSeries_TargetAxis (..),
+
+    -- ** BasicChartSeries_Type
+    BasicChartSeries_Type (..),
+
+    -- ** BasicChartSpec
+    BasicChartSpec (..),
+    newBasicChartSpec,
+
+    -- ** BasicChartSpec_ChartType
+    BasicChartSpec_ChartType (..),
+
+    -- ** BasicChartSpec_CompareMode
+    BasicChartSpec_CompareMode (..),
+
+    -- ** BasicChartSpec_LegendPosition
+    BasicChartSpec_LegendPosition (..),
+
+    -- ** BasicChartSpec_StackedType
+    BasicChartSpec_StackedType (..),
+
+    -- ** BasicFilter
+    BasicFilter (..),
+    newBasicFilter,
+
+    -- ** BasicFilter_Criteria
+    BasicFilter_Criteria (..),
+    newBasicFilter_Criteria,
+
+    -- ** BasicSeriesDataPointStyleOverride
+    BasicSeriesDataPointStyleOverride (..),
+    newBasicSeriesDataPointStyleOverride,
+
+    -- ** BatchClearValuesByDataFilterRequest
+    BatchClearValuesByDataFilterRequest (..),
+    newBatchClearValuesByDataFilterRequest,
+
+    -- ** BatchClearValuesByDataFilterResponse
+    BatchClearValuesByDataFilterResponse (..),
+    newBatchClearValuesByDataFilterResponse,
+
+    -- ** BatchClearValuesRequest
+    BatchClearValuesRequest (..),
+    newBatchClearValuesRequest,
+
+    -- ** BatchClearValuesResponse
+    BatchClearValuesResponse (..),
+    newBatchClearValuesResponse,
+
+    -- ** BatchGetValuesByDataFilterRequest
+    BatchGetValuesByDataFilterRequest (..),
+    newBatchGetValuesByDataFilterRequest,
+
+    -- ** BatchGetValuesByDataFilterRequest_DateTimeRenderOption
+    BatchGetValuesByDataFilterRequest_DateTimeRenderOption (..),
+
+    -- ** BatchGetValuesByDataFilterRequest_MajorDimension
+    BatchGetValuesByDataFilterRequest_MajorDimension (..),
+
+    -- ** BatchGetValuesByDataFilterRequest_ValueRenderOption
+    BatchGetValuesByDataFilterRequest_ValueRenderOption (..),
+
+    -- ** BatchGetValuesByDataFilterResponse
+    BatchGetValuesByDataFilterResponse (..),
+    newBatchGetValuesByDataFilterResponse,
+
+    -- ** BatchGetValuesResponse
+    BatchGetValuesResponse (..),
+    newBatchGetValuesResponse,
+
+    -- ** BatchUpdateSpreadsheetRequest
+    BatchUpdateSpreadsheetRequest (..),
+    newBatchUpdateSpreadsheetRequest,
+
+    -- ** BatchUpdateSpreadsheetResponse
+    BatchUpdateSpreadsheetResponse (..),
+    newBatchUpdateSpreadsheetResponse,
+
+    -- ** BatchUpdateValuesByDataFilterRequest
+    BatchUpdateValuesByDataFilterRequest (..),
+    newBatchUpdateValuesByDataFilterRequest,
+
+    -- ** BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption
+    BatchUpdateValuesByDataFilterRequest_ResponseDateTimeRenderOption (..),
+
+    -- ** BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption
+    BatchUpdateValuesByDataFilterRequest_ResponseValueRenderOption (..),
+
+    -- ** BatchUpdateValuesByDataFilterRequest_ValueInputOption
+    BatchUpdateValuesByDataFilterRequest_ValueInputOption (..),
+
+    -- ** BatchUpdateValuesByDataFilterResponse
+    BatchUpdateValuesByDataFilterResponse (..),
+    newBatchUpdateValuesByDataFilterResponse,
+
+    -- ** BatchUpdateValuesRequest
+    BatchUpdateValuesRequest (..),
+    newBatchUpdateValuesRequest,
+
+    -- ** BatchUpdateValuesRequest_ResponseDateTimeRenderOption
+    BatchUpdateValuesRequest_ResponseDateTimeRenderOption (..),
+
+    -- ** BatchUpdateValuesRequest_ResponseValueRenderOption
+    BatchUpdateValuesRequest_ResponseValueRenderOption (..),
+
+    -- ** BatchUpdateValuesRequest_ValueInputOption
+    BatchUpdateValuesRequest_ValueInputOption (..),
+
+    -- ** BatchUpdateValuesResponse
+    BatchUpdateValuesResponse (..),
+    newBatchUpdateValuesResponse,
+
+    -- ** BigQueryDataSourceSpec
+    BigQueryDataSourceSpec (..),
+    newBigQueryDataSourceSpec,
+
+    -- ** BigQueryQuerySpec
+    BigQueryQuerySpec (..),
+    newBigQueryQuerySpec,
+
+    -- ** BigQueryTableSpec
+    BigQueryTableSpec (..),
+    newBigQueryTableSpec,
+
+    -- ** BooleanCondition
+    BooleanCondition (..),
+    newBooleanCondition,
+
+    -- ** BooleanCondition_Type
+    BooleanCondition_Type (..),
+
+    -- ** BooleanRule
+    BooleanRule (..),
+    newBooleanRule,
+
+    -- ** Border
+    Border (..),
+    newBorder,
+
+    -- ** Border_Style
+    Border_Style (..),
+
+    -- ** Borders
+    Borders (..),
+    newBorders,
+
+    -- ** BubbleChartSpec
+    BubbleChartSpec (..),
+    newBubbleChartSpec,
+
+    -- ** BubbleChartSpec_LegendPosition
+    BubbleChartSpec_LegendPosition (..),
+
+    -- ** CancelDataSourceRefreshRequest
+    CancelDataSourceRefreshRequest (..),
+    newCancelDataSourceRefreshRequest,
+
+    -- ** CancelDataSourceRefreshResponse
+    CancelDataSourceRefreshResponse (..),
+    newCancelDataSourceRefreshResponse,
+
+    -- ** CancelDataSourceRefreshStatus
+    CancelDataSourceRefreshStatus (..),
+    newCancelDataSourceRefreshStatus,
+
+    -- ** CandlestickChartSpec
+    CandlestickChartSpec (..),
+    newCandlestickChartSpec,
+
+    -- ** CandlestickData
+    CandlestickData (..),
+    newCandlestickData,
+
+    -- ** CandlestickDomain
+    CandlestickDomain (..),
+    newCandlestickDomain,
+
+    -- ** CandlestickSeries
+    CandlestickSeries (..),
+    newCandlestickSeries,
+
+    -- ** CellData
+    CellData (..),
+    newCellData,
+
+    -- ** CellFormat
+    CellFormat (..),
+    newCellFormat,
+
+    -- ** CellFormat_HorizontalAlignment
+    CellFormat_HorizontalAlignment (..),
+
+    -- ** CellFormat_HyperlinkDisplayType
+    CellFormat_HyperlinkDisplayType (..),
+
+    -- ** CellFormat_TextDirection
+    CellFormat_TextDirection (..),
+
+    -- ** CellFormat_VerticalAlignment
+    CellFormat_VerticalAlignment (..),
+
+    -- ** CellFormat_WrapStrategy
+    CellFormat_WrapStrategy (..),
+
+    -- ** ChartAxisViewWindowOptions
+    ChartAxisViewWindowOptions (..),
+    newChartAxisViewWindowOptions,
+
+    -- ** ChartAxisViewWindowOptions_ViewWindowMode
+    ChartAxisViewWindowOptions_ViewWindowMode (..),
+
+    -- ** ChartCustomNumberFormatOptions
+    ChartCustomNumberFormatOptions (..),
+    newChartCustomNumberFormatOptions,
+
+    -- ** ChartData
+    ChartData (..),
+    newChartData,
+
+    -- ** ChartData_AggregateType
+    ChartData_AggregateType (..),
+
+    -- ** ChartDateTimeRule
+    ChartDateTimeRule (..),
+    newChartDateTimeRule,
+
+    -- ** ChartDateTimeRule_Type
+    ChartDateTimeRule_Type (..),
+
+    -- ** ChartGroupRule
+    ChartGroupRule (..),
+    newChartGroupRule,
+
+    -- ** ChartHistogramRule
+    ChartHistogramRule (..),
+    newChartHistogramRule,
+
+    -- ** ChartSourceRange
+    ChartSourceRange (..),
+    newChartSourceRange,
+
+    -- ** ChartSpec
+    ChartSpec (..),
+    newChartSpec,
+
+    -- ** ChartSpec_HiddenDimensionStrategy
+    ChartSpec_HiddenDimensionStrategy (..),
+
+    -- ** ClearBasicFilterRequest
+    ClearBasicFilterRequest (..),
+    newClearBasicFilterRequest,
+
+    -- ** ClearValuesRequest
+    ClearValuesRequest (..),
+    newClearValuesRequest,
+
+    -- ** ClearValuesResponse
+    ClearValuesResponse (..),
+    newClearValuesResponse,
+
+    -- ** Color
+    Color (..),
+    newColor,
+
+    -- ** ColorStyle
+    ColorStyle (..),
+    newColorStyle,
+
+    -- ** ColorStyle_ThemeColor
+    ColorStyle_ThemeColor (..),
+
+    -- ** ConditionValue
+    ConditionValue (..),
+    newConditionValue,
+
+    -- ** ConditionValue_RelativeDate
+    ConditionValue_RelativeDate (..),
+
+    -- ** ConditionalFormatRule
+    ConditionalFormatRule (..),
+    newConditionalFormatRule,
+
+    -- ** CopyPasteRequest
+    CopyPasteRequest (..),
+    newCopyPasteRequest,
+
+    -- ** CopyPasteRequest_PasteOrientation
+    CopyPasteRequest_PasteOrientation (..),
+
+    -- ** CopyPasteRequest_PasteType
+    CopyPasteRequest_PasteType (..),
+
+    -- ** CopySheetToAnotherSpreadsheetRequest
+    CopySheetToAnotherSpreadsheetRequest (..),
+    newCopySheetToAnotherSpreadsheetRequest,
+
+    -- ** CreateDeveloperMetadataRequest
+    CreateDeveloperMetadataRequest (..),
+    newCreateDeveloperMetadataRequest,
+
+    -- ** CreateDeveloperMetadataResponse
+    CreateDeveloperMetadataResponse (..),
+    newCreateDeveloperMetadataResponse,
+
+    -- ** CutPasteRequest
+    CutPasteRequest (..),
+    newCutPasteRequest,
+
+    -- ** CutPasteRequest_PasteType
+    CutPasteRequest_PasteType (..),
+
+    -- ** DataExecutionStatus
+    DataExecutionStatus (..),
+    newDataExecutionStatus,
+
+    -- ** DataExecutionStatus_ErrorCode
+    DataExecutionStatus_ErrorCode (..),
+
+    -- ** DataExecutionStatus_State
+    DataExecutionStatus_State (..),
+
+    -- ** DataFilter
+    DataFilter (..),
+    newDataFilter,
+
+    -- ** DataFilterValueRange
+    DataFilterValueRange (..),
+    newDataFilterValueRange,
+
+    -- ** DataFilterValueRange_MajorDimension
+    DataFilterValueRange_MajorDimension (..),
+
+    -- ** DataLabel
+    DataLabel (..),
+    newDataLabel,
+
+    -- ** DataLabel_Placement
+    DataLabel_Placement (..),
+
+    -- ** DataLabel_Type
+    DataLabel_Type (..),
+
+    -- ** DataSource
+    DataSource (..),
+    newDataSource,
+
+    -- ** DataSourceChartProperties
+    DataSourceChartProperties (..),
+    newDataSourceChartProperties,
+
+    -- ** DataSourceColumn
+    DataSourceColumn (..),
+    newDataSourceColumn,
+
+    -- ** DataSourceColumnReference
+    DataSourceColumnReference (..),
+    newDataSourceColumnReference,
+
+    -- ** DataSourceFormula
+    DataSourceFormula (..),
+    newDataSourceFormula,
+
+    -- ** DataSourceObjectReference
+    DataSourceObjectReference (..),
+    newDataSourceObjectReference,
+
+    -- ** DataSourceObjectReferences
+    DataSourceObjectReferences (..),
+    newDataSourceObjectReferences,
+
+    -- ** DataSourceParameter
+    DataSourceParameter (..),
+    newDataSourceParameter,
+
+    -- ** DataSourceRefreshDailySchedule
+    DataSourceRefreshDailySchedule (..),
+    newDataSourceRefreshDailySchedule,
+
+    -- ** DataSourceRefreshMonthlySchedule
+    DataSourceRefreshMonthlySchedule (..),
+    newDataSourceRefreshMonthlySchedule,
+
+    -- ** DataSourceRefreshSchedule
+    DataSourceRefreshSchedule (..),
+    newDataSourceRefreshSchedule,
+
+    -- ** DataSourceRefreshSchedule_RefreshScope
+    DataSourceRefreshSchedule_RefreshScope (..),
+
+    -- ** DataSourceRefreshWeeklySchedule
+    DataSourceRefreshWeeklySchedule (..),
+    newDataSourceRefreshWeeklySchedule,
+
+    -- ** DataSourceRefreshWeeklySchedule_DaysOfWeekItem
+    DataSourceRefreshWeeklySchedule_DaysOfWeekItem (..),
+
+    -- ** DataSourceSheetDimensionRange
+    DataSourceSheetDimensionRange (..),
+    newDataSourceSheetDimensionRange,
+
+    -- ** DataSourceSheetProperties
+    DataSourceSheetProperties (..),
+    newDataSourceSheetProperties,
+
+    -- ** DataSourceSpec
+    DataSourceSpec (..),
+    newDataSourceSpec,
+
+    -- ** DataSourceTable
+    DataSourceTable (..),
+    newDataSourceTable,
+
+    -- ** DataSourceTable_ColumnSelectionType
+    DataSourceTable_ColumnSelectionType (..),
+
+    -- ** DataValidationRule
+    DataValidationRule (..),
+    newDataValidationRule,
+
+    -- ** DateTimeRule
+    DateTimeRule (..),
+    newDateTimeRule,
+
+    -- ** DateTimeRule_Type
+    DateTimeRule_Type (..),
+
+    -- ** DeleteBandingRequest
+    DeleteBandingRequest (..),
+    newDeleteBandingRequest,
+
+    -- ** DeleteConditionalFormatRuleRequest
+    DeleteConditionalFormatRuleRequest (..),
+    newDeleteConditionalFormatRuleRequest,
+
+    -- ** DeleteConditionalFormatRuleResponse
+    DeleteConditionalFormatRuleResponse (..),
+    newDeleteConditionalFormatRuleResponse,
+
+    -- ** DeleteDataSourceRequest
+    DeleteDataSourceRequest (..),
+    newDeleteDataSourceRequest,
+
+    -- ** DeleteDeveloperMetadataRequest
+    DeleteDeveloperMetadataRequest (..),
+    newDeleteDeveloperMetadataRequest,
+
+    -- ** DeleteDeveloperMetadataResponse
+    DeleteDeveloperMetadataResponse (..),
+    newDeleteDeveloperMetadataResponse,
+
+    -- ** DeleteDimensionGroupRequest
+    DeleteDimensionGroupRequest (..),
+    newDeleteDimensionGroupRequest,
+
+    -- ** DeleteDimensionGroupResponse
+    DeleteDimensionGroupResponse (..),
+    newDeleteDimensionGroupResponse,
+
+    -- ** DeleteDimensionRequest
+    DeleteDimensionRequest (..),
+    newDeleteDimensionRequest,
+
+    -- ** DeleteDuplicatesRequest
+    DeleteDuplicatesRequest (..),
+    newDeleteDuplicatesRequest,
+
+    -- ** DeleteDuplicatesResponse
+    DeleteDuplicatesResponse (..),
+    newDeleteDuplicatesResponse,
+
+    -- ** DeleteEmbeddedObjectRequest
+    DeleteEmbeddedObjectRequest (..),
+    newDeleteEmbeddedObjectRequest,
+
+    -- ** DeleteFilterViewRequest
+    DeleteFilterViewRequest (..),
+    newDeleteFilterViewRequest,
+
+    -- ** DeleteNamedRangeRequest
+    DeleteNamedRangeRequest (..),
+    newDeleteNamedRangeRequest,
+
+    -- ** DeleteProtectedRangeRequest
+    DeleteProtectedRangeRequest (..),
+    newDeleteProtectedRangeRequest,
+
+    -- ** DeleteRangeRequest
+    DeleteRangeRequest (..),
+    newDeleteRangeRequest,
+
+    -- ** DeleteRangeRequest_ShiftDimension
+    DeleteRangeRequest_ShiftDimension (..),
+
+    -- ** DeleteSheetRequest
+    DeleteSheetRequest (..),
+    newDeleteSheetRequest,
+
+    -- ** DeveloperMetadata
+    DeveloperMetadata (..),
+    newDeveloperMetadata,
+
+    -- ** DeveloperMetadata_Visibility
+    DeveloperMetadata_Visibility (..),
+
+    -- ** DeveloperMetadataLocation
+    DeveloperMetadataLocation (..),
+    newDeveloperMetadataLocation,
+
+    -- ** DeveloperMetadataLocation_LocationType
+    DeveloperMetadataLocation_LocationType (..),
+
+    -- ** DeveloperMetadataLookup
+    DeveloperMetadataLookup (..),
+    newDeveloperMetadataLookup,
+
+    -- ** DeveloperMetadataLookup_LocationMatchingStrategy
+    DeveloperMetadataLookup_LocationMatchingStrategy (..),
+
+    -- ** DeveloperMetadataLookup_LocationType
+    DeveloperMetadataLookup_LocationType (..),
+
+    -- ** DeveloperMetadataLookup_Visibility
+    DeveloperMetadataLookup_Visibility (..),
+
+    -- ** DimensionGroup
+    DimensionGroup (..),
+    newDimensionGroup,
+
+    -- ** DimensionProperties
+    DimensionProperties (..),
+    newDimensionProperties,
+
+    -- ** DimensionRange
+    DimensionRange (..),
+    newDimensionRange,
+
+    -- ** DimensionRange_Dimension
+    DimensionRange_Dimension (..),
+
+    -- ** DuplicateFilterViewRequest
+    DuplicateFilterViewRequest (..),
+    newDuplicateFilterViewRequest,
+
+    -- ** DuplicateFilterViewResponse
+    DuplicateFilterViewResponse (..),
+    newDuplicateFilterViewResponse,
+
+    -- ** DuplicateSheetRequest
+    DuplicateSheetRequest (..),
+    newDuplicateSheetRequest,
+
+    -- ** DuplicateSheetResponse
+    DuplicateSheetResponse (..),
+    newDuplicateSheetResponse,
+
+    -- ** Editors
+    Editors (..),
+    newEditors,
+
+    -- ** EmbeddedChart
+    EmbeddedChart (..),
+    newEmbeddedChart,
+
+    -- ** EmbeddedObjectBorder
+    EmbeddedObjectBorder (..),
+    newEmbeddedObjectBorder,
+
+    -- ** EmbeddedObjectPosition
+    EmbeddedObjectPosition (..),
+    newEmbeddedObjectPosition,
+
+    -- ** ErrorValue
+    ErrorValue (..),
+    newErrorValue,
+
+    -- ** ErrorValue_Type
+    ErrorValue_Type (..),
+
+    -- ** ExtendedValue
+    ExtendedValue (..),
+    newExtendedValue,
+
+    -- ** FilterCriteria
+    FilterCriteria (..),
+    newFilterCriteria,
+
+    -- ** FilterSpec
+    FilterSpec (..),
+    newFilterSpec,
+
+    -- ** FilterView
+    FilterView (..),
+    newFilterView,
+
+    -- ** FilterView_Criteria
+    FilterView_Criteria (..),
+    newFilterView_Criteria,
+
+    -- ** FindReplaceRequest
+    FindReplaceRequest (..),
+    newFindReplaceRequest,
+
+    -- ** FindReplaceResponse
+    FindReplaceResponse (..),
+    newFindReplaceResponse,
+
+    -- ** GetSpreadsheetByDataFilterRequest
+    GetSpreadsheetByDataFilterRequest (..),
+    newGetSpreadsheetByDataFilterRequest,
+
+    -- ** GradientRule
+    GradientRule (..),
+    newGradientRule,
+
+    -- ** GridCoordinate
+    GridCoordinate (..),
+    newGridCoordinate,
+
+    -- ** GridData
+    GridData (..),
+    newGridData,
+
+    -- ** GridProperties
+    GridProperties (..),
+    newGridProperties,
+
+    -- ** GridRange
+    GridRange (..),
+    newGridRange,
+
+    -- ** HistogramChartSpec
+    HistogramChartSpec (..),
+    newHistogramChartSpec,
+
+    -- ** HistogramChartSpec_LegendPosition
+    HistogramChartSpec_LegendPosition (..),
+
+    -- ** HistogramRule
+    HistogramRule (..),
+    newHistogramRule,
+
+    -- ** HistogramSeries
+    HistogramSeries (..),
+    newHistogramSeries,
+
+    -- ** InsertDimensionRequest
+    InsertDimensionRequest (..),
+    newInsertDimensionRequest,
+
+    -- ** InsertRangeRequest
+    InsertRangeRequest (..),
+    newInsertRangeRequest,
+
+    -- ** InsertRangeRequest_ShiftDimension
+    InsertRangeRequest_ShiftDimension (..),
+
+    -- ** InterpolationPoint
+    InterpolationPoint (..),
+    newInterpolationPoint,
+
+    -- ** InterpolationPoint_Type
+    InterpolationPoint_Type (..),
+
+    -- ** Interval
+    Interval (..),
+    newInterval,
+
+    -- ** IterativeCalculationSettings
+    IterativeCalculationSettings (..),
+    newIterativeCalculationSettings,
+
+    -- ** KeyValueFormat
+    KeyValueFormat (..),
+    newKeyValueFormat,
+
+    -- ** LineStyle
+    LineStyle (..),
+    newLineStyle,
+
+    -- ** LineStyle_Type
+    LineStyle_Type (..),
+
+    -- ** Link
+    Link (..),
+    newLink,
+
+    -- ** LookerDataSourceSpec
+    LookerDataSourceSpec (..),
+    newLookerDataSourceSpec,
+
+    -- ** ManualRule
+    ManualRule (..),
+    newManualRule,
+
+    -- ** ManualRuleGroup
+    ManualRuleGroup (..),
+    newManualRuleGroup,
+
+    -- ** MatchedDeveloperMetadata
+    MatchedDeveloperMetadata (..),
+    newMatchedDeveloperMetadata,
+
+    -- ** MatchedValueRange
+    MatchedValueRange (..),
+    newMatchedValueRange,
+
+    -- ** MergeCellsRequest
+    MergeCellsRequest (..),
+    newMergeCellsRequest,
+
+    -- ** MergeCellsRequest_MergeType
+    MergeCellsRequest_MergeType (..),
+
+    -- ** MoveDimensionRequest
+    MoveDimensionRequest (..),
+    newMoveDimensionRequest,
+
+    -- ** NamedRange
+    NamedRange (..),
+    newNamedRange,
+
+    -- ** NumberFormat
+    NumberFormat (..),
+    newNumberFormat,
+
+    -- ** NumberFormat_Type
+    NumberFormat_Type (..),
+
+    -- ** OrgChartSpec
+    OrgChartSpec (..),
+    newOrgChartSpec,
+
+    -- ** OrgChartSpec_NodeSize
+    OrgChartSpec_NodeSize (..),
+
+    -- ** OverlayPosition
+    OverlayPosition (..),
+    newOverlayPosition,
+
+    -- ** Padding
+    Padding (..),
+    newPadding,
+
+    -- ** PasteDataRequest
+    PasteDataRequest (..),
+    newPasteDataRequest,
+
+    -- ** PasteDataRequest_Type
+    PasteDataRequest_Type (..),
+
+    -- ** PieChartSpec
+    PieChartSpec (..),
+    newPieChartSpec,
+
+    -- ** PieChartSpec_LegendPosition
+    PieChartSpec_LegendPosition (..),
+
+    -- ** PivotFilterCriteria
+    PivotFilterCriteria (..),
+    newPivotFilterCriteria,
+
+    -- ** PivotFilterSpec
+    PivotFilterSpec (..),
+    newPivotFilterSpec,
+
+    -- ** PivotGroup
+    PivotGroup (..),
+    newPivotGroup,
+
+    -- ** PivotGroup_SortOrder
+    PivotGroup_SortOrder (..),
+
+    -- ** PivotGroupLimit
+    PivotGroupLimit (..),
+    newPivotGroupLimit,
+
+    -- ** PivotGroupRule
+    PivotGroupRule (..),
+    newPivotGroupRule,
+
+    -- ** PivotGroupSortValueBucket
+    PivotGroupSortValueBucket (..),
+    newPivotGroupSortValueBucket,
+
+    -- ** PivotGroupValueMetadata
+    PivotGroupValueMetadata (..),
+    newPivotGroupValueMetadata,
+
+    -- ** PivotTable
+    PivotTable (..),
+    newPivotTable,
+
+    -- ** PivotTable_Criteria
+    PivotTable_Criteria (..),
+    newPivotTable_Criteria,
+
+    -- ** PivotTable_ValueLayout
+    PivotTable_ValueLayout (..),
+
+    -- ** PivotValue
+    PivotValue (..),
+    newPivotValue,
+
+    -- ** PivotValue_CalculatedDisplayType
+    PivotValue_CalculatedDisplayType (..),
+
+    -- ** PivotValue_SummarizeFunction
+    PivotValue_SummarizeFunction (..),
+
+    -- ** PointStyle
+    PointStyle (..),
+    newPointStyle,
+
+    -- ** PointStyle_Shape
+    PointStyle_Shape (..),
+
+    -- ** ProtectedRange
+    ProtectedRange (..),
+    newProtectedRange,
+
+    -- ** RandomizeRangeRequest
+    RandomizeRangeRequest (..),
+    newRandomizeRangeRequest,
+
+    -- ** RefreshCancellationStatus
+    RefreshCancellationStatus (..),
+    newRefreshCancellationStatus,
+
+    -- ** RefreshCancellationStatus_ErrorCode
+    RefreshCancellationStatus_ErrorCode (..),
+
+    -- ** RefreshCancellationStatus_State
+    RefreshCancellationStatus_State (..),
+
+    -- ** RefreshDataSourceObjectExecutionStatus
+    RefreshDataSourceObjectExecutionStatus (..),
+    newRefreshDataSourceObjectExecutionStatus,
+
+    -- ** RefreshDataSourceRequest
+    RefreshDataSourceRequest (..),
+    newRefreshDataSourceRequest,
+
+    -- ** RefreshDataSourceResponse
+    RefreshDataSourceResponse (..),
+    newRefreshDataSourceResponse,
+
+    -- ** RepeatCellRequest
+    RepeatCellRequest (..),
+    newRepeatCellRequest,
+
+    -- ** Request'
+    Request' (..),
+    newRequest,
+
+    -- ** Response
+    Response (..),
+    newResponse,
+
+    -- ** RowData
+    RowData (..),
+    newRowData,
+
+    -- ** ScorecardChartSpec
+    ScorecardChartSpec (..),
+    newScorecardChartSpec,
+
+    -- ** ScorecardChartSpec_AggregateType
+    ScorecardChartSpec_AggregateType (..),
+
+    -- ** ScorecardChartSpec_NumberFormatSource
+    ScorecardChartSpec_NumberFormatSource (..),
+
+    -- ** SearchDeveloperMetadataRequest
+    SearchDeveloperMetadataRequest (..),
+    newSearchDeveloperMetadataRequest,
+
+    -- ** SearchDeveloperMetadataResponse
+    SearchDeveloperMetadataResponse (..),
+    newSearchDeveloperMetadataResponse,
+
+    -- ** SetBasicFilterRequest
+    SetBasicFilterRequest (..),
+    newSetBasicFilterRequest,
+
+    -- ** SetDataValidationRequest
+    SetDataValidationRequest (..),
+    newSetDataValidationRequest,
+
+    -- ** Sheet
+    Sheet (..),
+    newSheet,
+
+    -- ** SheetProperties
+    SheetProperties (..),
+    newSheetProperties,
+
+    -- ** SheetProperties_SheetType
+    SheetProperties_SheetType (..),
+
+    -- ** Slicer
+    Slicer (..),
+    newSlicer,
+
+    -- ** SlicerSpec
+    SlicerSpec (..),
+    newSlicerSpec,
+
+    -- ** SlicerSpec_HorizontalAlignment
+    SlicerSpec_HorizontalAlignment (..),
+
+    -- ** SortRangeRequest
+    SortRangeRequest (..),
+    newSortRangeRequest,
+
+    -- ** SortSpec
+    SortSpec (..),
+    newSortSpec,
+
+    -- ** SortSpec_SortOrder
+    SortSpec_SortOrder (..),
+
+    -- ** SourceAndDestination
+    SourceAndDestination (..),
+    newSourceAndDestination,
+
+    -- ** SourceAndDestination_Dimension
+    SourceAndDestination_Dimension (..),
+
+    -- ** Spreadsheet
+    Spreadsheet (..),
+    newSpreadsheet,
+
+    -- ** SpreadsheetProperties
+    SpreadsheetProperties (..),
+    newSpreadsheetProperties,
+
+    -- ** SpreadsheetProperties_AutoRecalc
+    SpreadsheetProperties_AutoRecalc (..),
+
+    -- ** SpreadsheetTheme
+    SpreadsheetTheme (..),
+    newSpreadsheetTheme,
+
+    -- ** TextFormat
+    TextFormat (..),
+    newTextFormat,
+
+    -- ** TextFormatRun
+    TextFormatRun (..),
+    newTextFormatRun,
+
+    -- ** TextPosition
+    TextPosition (..),
+    newTextPosition,
+
+    -- ** TextPosition_HorizontalAlignment
+    TextPosition_HorizontalAlignment (..),
+
+    -- ** TextRotation
+    TextRotation (..),
+    newTextRotation,
+
+    -- ** TextToColumnsRequest
+    TextToColumnsRequest (..),
+    newTextToColumnsRequest,
+
+    -- ** TextToColumnsRequest_DelimiterType
+    TextToColumnsRequest_DelimiterType (..),
+
+    -- ** ThemeColorPair
+    ThemeColorPair (..),
+    newThemeColorPair,
+
+    -- ** ThemeColorPair_ColorType
+    ThemeColorPair_ColorType (..),
+
+    -- ** TimeOfDay'
+    TimeOfDay' (..),
+    newTimeOfDay,
+
+    -- ** TreemapChartColorScale
+    TreemapChartColorScale (..),
+    newTreemapChartColorScale,
+
+    -- ** TreemapChartSpec
+    TreemapChartSpec (..),
+    newTreemapChartSpec,
+
+    -- ** TrimWhitespaceRequest
+    TrimWhitespaceRequest (..),
+    newTrimWhitespaceRequest,
+
+    -- ** TrimWhitespaceResponse
+    TrimWhitespaceResponse (..),
+    newTrimWhitespaceResponse,
+
+    -- ** UnmergeCellsRequest
+    UnmergeCellsRequest (..),
+    newUnmergeCellsRequest,
+
+    -- ** UpdateBandingRequest
+    UpdateBandingRequest (..),
+    newUpdateBandingRequest,
+
+    -- ** UpdateBordersRequest
+    UpdateBordersRequest (..),
+    newUpdateBordersRequest,
+
+    -- ** UpdateCellsRequest
+    UpdateCellsRequest (..),
+    newUpdateCellsRequest,
+
+    -- ** UpdateChartSpecRequest
+    UpdateChartSpecRequest (..),
+    newUpdateChartSpecRequest,
+
+    -- ** UpdateConditionalFormatRuleRequest
+    UpdateConditionalFormatRuleRequest (..),
+    newUpdateConditionalFormatRuleRequest,
+
+    -- ** UpdateConditionalFormatRuleResponse
+    UpdateConditionalFormatRuleResponse (..),
+    newUpdateConditionalFormatRuleResponse,
+
+    -- ** UpdateDataSourceRequest
+    UpdateDataSourceRequest (..),
+    newUpdateDataSourceRequest,
+
+    -- ** UpdateDataSourceResponse
+    UpdateDataSourceResponse (..),
+    newUpdateDataSourceResponse,
+
+    -- ** UpdateDeveloperMetadataRequest
+    UpdateDeveloperMetadataRequest (..),
+    newUpdateDeveloperMetadataRequest,
+
+    -- ** UpdateDeveloperMetadataResponse
+    UpdateDeveloperMetadataResponse (..),
+    newUpdateDeveloperMetadataResponse,
+
+    -- ** UpdateDimensionGroupRequest
+    UpdateDimensionGroupRequest (..),
+    newUpdateDimensionGroupRequest,
+
+    -- ** UpdateDimensionPropertiesRequest
+    UpdateDimensionPropertiesRequest (..),
+    newUpdateDimensionPropertiesRequest,
+
+    -- ** UpdateEmbeddedObjectBorderRequest
+    UpdateEmbeddedObjectBorderRequest (..),
+    newUpdateEmbeddedObjectBorderRequest,
+
+    -- ** UpdateEmbeddedObjectPositionRequest
+    UpdateEmbeddedObjectPositionRequest (..),
+    newUpdateEmbeddedObjectPositionRequest,
+
+    -- ** UpdateEmbeddedObjectPositionResponse
+    UpdateEmbeddedObjectPositionResponse (..),
+    newUpdateEmbeddedObjectPositionResponse,
+
+    -- ** UpdateFilterViewRequest
+    UpdateFilterViewRequest (..),
+    newUpdateFilterViewRequest,
+
+    -- ** UpdateNamedRangeRequest
+    UpdateNamedRangeRequest (..),
+    newUpdateNamedRangeRequest,
+
+    -- ** UpdateProtectedRangeRequest
+    UpdateProtectedRangeRequest (..),
+    newUpdateProtectedRangeRequest,
+
+    -- ** UpdateSheetPropertiesRequest
+    UpdateSheetPropertiesRequest (..),
+    newUpdateSheetPropertiesRequest,
+
+    -- ** UpdateSlicerSpecRequest
+    UpdateSlicerSpecRequest (..),
+    newUpdateSlicerSpecRequest,
+
+    -- ** UpdateSpreadsheetPropertiesRequest
+    UpdateSpreadsheetPropertiesRequest (..),
+    newUpdateSpreadsheetPropertiesRequest,
+
+    -- ** UpdateValuesByDataFilterResponse
+    UpdateValuesByDataFilterResponse (..),
+    newUpdateValuesByDataFilterResponse,
+
+    -- ** UpdateValuesResponse
+    UpdateValuesResponse (..),
+    newUpdateValuesResponse,
+
+    -- ** ValueRange
+    ValueRange (..),
+    newValueRange,
+
+    -- ** ValueRange_MajorDimension
+    ValueRange_MajorDimension (..),
+
+    -- ** WaterfallChartColumnStyle
+    WaterfallChartColumnStyle (..),
+    newWaterfallChartColumnStyle,
+
+    -- ** WaterfallChartCustomSubtotal
+    WaterfallChartCustomSubtotal (..),
+    newWaterfallChartCustomSubtotal,
+
+    -- ** WaterfallChartDomain
+    WaterfallChartDomain (..),
+    newWaterfallChartDomain,
+
+    -- ** WaterfallChartSeries
+    WaterfallChartSeries (..),
+    newWaterfallChartSeries,
+
+    -- ** WaterfallChartSpec
+    WaterfallChartSpec (..),
+    newWaterfallChartSpec,
+
+    -- ** WaterfallChartSpec_StackedType
+    WaterfallChartSpec_StackedType (..),
+
+    -- ** SpreadsheetsValuesAppendInsertDataOption
+    SpreadsheetsValuesAppendInsertDataOption (..),
+
+    -- ** SpreadsheetsValuesAppendResponseDateTimeRenderOption
+    SpreadsheetsValuesAppendResponseDateTimeRenderOption (..),
+
+    -- ** SpreadsheetsValuesAppendResponseValueRenderOption
+    SpreadsheetsValuesAppendResponseValueRenderOption (..),
+
+    -- ** SpreadsheetsValuesAppendValueInputOption
+    SpreadsheetsValuesAppendValueInputOption (..),
+
+    -- ** SpreadsheetsValuesBatchGetDateTimeRenderOption
+    SpreadsheetsValuesBatchGetDateTimeRenderOption (..),
+
+    -- ** SpreadsheetsValuesBatchGetMajorDimension
+    SpreadsheetsValuesBatchGetMajorDimension (..),
+
+    -- ** SpreadsheetsValuesBatchGetValueRenderOption
+    SpreadsheetsValuesBatchGetValueRenderOption (..),
+
+    -- ** SpreadsheetsValuesGetDateTimeRenderOption
+    SpreadsheetsValuesGetDateTimeRenderOption (..),
+
+    -- ** SpreadsheetsValuesGetMajorDimension
+    SpreadsheetsValuesGetMajorDimension (..),
+
+    -- ** SpreadsheetsValuesGetValueRenderOption
+    SpreadsheetsValuesGetValueRenderOption (..),
+
+    -- ** SpreadsheetsValuesUpdateResponseDateTimeRenderOption
+    SpreadsheetsValuesUpdateResponseDateTimeRenderOption (..),
+
+    -- ** SpreadsheetsValuesUpdateResponseValueRenderOption
+    SpreadsheetsValuesUpdateResponseValueRenderOption (..),
+
+    -- ** SpreadsheetsValuesUpdateValueInputOption
+    SpreadsheetsValuesUpdateValueInputOption (..),
+  )
+where
+
+import Gogol.Prelude qualified as Core
+import Gogol.Sheets.Internal.Product
+import Gogol.Sheets.Internal.Sum
+
+-- | Default request referring to version @v4@ of the Google Sheets API. This contains the host and root path used as a starting point for constructing service requests.
+sheetsService :: Core.ServiceConfig
+sheetsService =
+  Core.defaultService
+    (Core.ServiceId "sheets:v4")
+    "sheets.googleapis.com"
+
+-- | See, edit, create, and delete all of your Google Drive files
+type Drive'FullControl = "https://www.googleapis.com/auth/drive"
+
+-- | See, edit, create, and delete only the specific Google Drive files you use with this app
+type Drive'File = "https://www.googleapis.com/auth/drive.file"
+
+-- | See and download all your Google Drive files
+type Drive'Readonly =
+  "https://www.googleapis.com/auth/drive.readonly"
+
+-- | See, edit, create, and delete all your Google Sheets spreadsheets
+type Spreadsheets'FullControl =
+  "https://www.googleapis.com/auth/spreadsheets"
+
+-- | See all your Google Sheets spreadsheets
+type Spreadsheets'Readonly =
+  "https://www.googleapis.com/auth/spreadsheets.readonly"
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/BatchUpdate.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/BatchUpdate.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/BatchUpdate.hs
+++ /dev/null
@@ -1,192 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Applies one or more updates to the spreadsheet. Each request is
--- validated before being applied. If any request is not valid then the
--- entire request will fail and nothing will be applied. Some requests have
--- replies to give you some information about how they are applied. The
--- replies will mirror the requests. For example, if you applied 4 updates
--- and the 3rd one had a reply, then the response will have 2 empty
--- replies, the actual reply, and another empty reply, in that order. Due
--- to the collaborative nature of spreadsheets, it is not guaranteed that
--- the spreadsheet will reflect exactly your changes after this completes,
--- however it is guaranteed that the updates in the request will be applied
--- together atomically. Your changes may be altered with respect to
--- collaborator changes. If there are no collaborators, the spreadsheet
--- should reflect your changes.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.batchUpdate@.
-module Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate
-    (
-    -- * REST Resource
-      SpreadsheetsBatchUpdateResource
-
-    -- * Creating a Request
-    , spreadsheetsBatchUpdate
-    , SpreadsheetsBatchUpdate
-
-    -- * Request Lenses
-    , sbuXgafv
-    , sbuUploadProtocol
-    , sbuAccessToken
-    , sbuSpreadsheetId
-    , sbuUploadType
-    , sbuPayload
-    , sbuCallback
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.batchUpdate@ method which the
--- 'SpreadsheetsBatchUpdate' request conforms to.
-type SpreadsheetsBatchUpdateResource =
-     "v4" :>
-       "spreadsheets" :>
-         CaptureMode "spreadsheetId" "batchUpdate" Text :>
-           QueryParam "$.xgafv" Xgafv :>
-             QueryParam "upload_protocol" Text :>
-               QueryParam "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
--- entire request will fail and nothing will be applied. Some requests have
--- replies to give you some information about how they are applied. The
--- replies will mirror the requests. For example, if you applied 4 updates
--- and the 3rd one had a reply, then the response will have 2 empty
--- replies, the actual reply, and another empty reply, in that order. Due
--- to the collaborative nature of spreadsheets, it is not guaranteed that
--- the spreadsheet will reflect exactly your changes after this completes,
--- however it is guaranteed that the updates in the request will be applied
--- together atomically. Your changes may be altered with respect to
--- collaborator changes. If there are no collaborators, the spreadsheet
--- should reflect your changes.
---
--- /See:/ 'spreadsheetsBatchUpdate' smart constructor.
-data SpreadsheetsBatchUpdate =
-  SpreadsheetsBatchUpdate'
-    { _sbuXgafv          :: !(Maybe Xgafv)
-    , _sbuUploadProtocol :: !(Maybe Text)
-    , _sbuAccessToken    :: !(Maybe Text)
-    , _sbuSpreadsheetId  :: !Text
-    , _sbuUploadType     :: !(Maybe Text)
-    , _sbuPayload        :: !BatchUpdateSpreadsheetRequest
-    , _sbuCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsBatchUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sbuXgafv'
---
--- * 'sbuUploadProtocol'
---
--- * 'sbuAccessToken'
---
--- * 'sbuSpreadsheetId'
---
--- * 'sbuUploadType'
---
--- * 'sbuPayload'
---
--- * 'sbuCallback'
-spreadsheetsBatchUpdate
-    :: Text -- ^ 'sbuSpreadsheetId'
-    -> BatchUpdateSpreadsheetRequest -- ^ 'sbuPayload'
-    -> SpreadsheetsBatchUpdate
-spreadsheetsBatchUpdate pSbuSpreadsheetId_ pSbuPayload_ =
-  SpreadsheetsBatchUpdate'
-    { _sbuXgafv = Nothing
-    , _sbuUploadProtocol = Nothing
-    , _sbuAccessToken = Nothing
-    , _sbuSpreadsheetId = pSbuSpreadsheetId_
-    , _sbuUploadType = Nothing
-    , _sbuPayload = pSbuPayload_
-    , _sbuCallback = Nothing
-    }
-
-
--- | V1 error format.
-sbuXgafv :: Lens' SpreadsheetsBatchUpdate (Maybe Xgafv)
-sbuXgafv = lens _sbuXgafv (\ s a -> s{_sbuXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-sbuUploadProtocol :: Lens' SpreadsheetsBatchUpdate (Maybe Text)
-sbuUploadProtocol
-  = lens _sbuUploadProtocol
-      (\ s a -> s{_sbuUploadProtocol = a})
-
--- | OAuth access token.
-sbuAccessToken :: Lens' SpreadsheetsBatchUpdate (Maybe Text)
-sbuAccessToken
-  = lens _sbuAccessToken
-      (\ s a -> s{_sbuAccessToken = a})
-
--- | The spreadsheet to apply the updates to.
-sbuSpreadsheetId :: Lens' SpreadsheetsBatchUpdate Text
-sbuSpreadsheetId
-  = lens _sbuSpreadsheetId
-      (\ s a -> s{_sbuSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-sbuUploadType :: Lens' SpreadsheetsBatchUpdate (Maybe Text)
-sbuUploadType
-  = lens _sbuUploadType
-      (\ s a -> s{_sbuUploadType = a})
-
--- | Multipart request metadata.
-sbuPayload :: Lens' SpreadsheetsBatchUpdate BatchUpdateSpreadsheetRequest
-sbuPayload
-  = lens _sbuPayload (\ s a -> s{_sbuPayload = a})
-
--- | JSONP
-sbuCallback :: Lens' SpreadsheetsBatchUpdate (Maybe Text)
-sbuCallback
-  = lens _sbuCallback (\ s a -> s{_sbuCallback = a})
-
-instance GoogleRequest SpreadsheetsBatchUpdate where
-        type Rs SpreadsheetsBatchUpdate =
-             BatchUpdateSpreadsheetResponse
-        type Scopes SpreadsheetsBatchUpdate =
-             '["https://www.googleapis.com/auth/drive",
-               "https://www.googleapis.com/auth/drive.file",
-               "https://www.googleapis.com/auth/spreadsheets"]
-        requestClient SpreadsheetsBatchUpdate'{..}
-          = go _sbuSpreadsheetId _sbuXgafv _sbuUploadProtocol
-              _sbuAccessToken
-              _sbuUploadType
-              _sbuCallback
-              (Just AltJSON)
-              _sbuPayload
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsBatchUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Create.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Create.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Create.hs
+++ /dev/null
@@ -1,152 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Sheets.Spreadsheets.Create
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates a spreadsheet, returning the newly created spreadsheet.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.create@.
-module Network.Google.Resource.Sheets.Spreadsheets.Create
-    (
-    -- * REST Resource
-      SpreadsheetsCreateResource
-
-    -- * Creating a Request
-    , spreadsheetsCreate
-    , SpreadsheetsCreate
-
-    -- * Request Lenses
-    , scXgafv
-    , scUploadProtocol
-    , scAccessToken
-    , scUploadType
-    , scPayload
-    , scCallback
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.create@ method which the
--- 'SpreadsheetsCreate' request conforms to.
-type SpreadsheetsCreateResource =
-     "v4" :>
-       "spreadsheets" :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "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.
---
--- /See:/ 'spreadsheetsCreate' smart constructor.
-data SpreadsheetsCreate =
-  SpreadsheetsCreate'
-    { _scXgafv          :: !(Maybe Xgafv)
-    , _scUploadProtocol :: !(Maybe Text)
-    , _scAccessToken    :: !(Maybe Text)
-    , _scUploadType     :: !(Maybe Text)
-    , _scPayload        :: !Spreadsheet
-    , _scCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsCreate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scXgafv'
---
--- * 'scUploadProtocol'
---
--- * 'scAccessToken'
---
--- * 'scUploadType'
---
--- * 'scPayload'
---
--- * 'scCallback'
-spreadsheetsCreate
-    :: Spreadsheet -- ^ 'scPayload'
-    -> SpreadsheetsCreate
-spreadsheetsCreate pScPayload_ =
-  SpreadsheetsCreate'
-    { _scXgafv = Nothing
-    , _scUploadProtocol = Nothing
-    , _scAccessToken = Nothing
-    , _scUploadType = Nothing
-    , _scPayload = pScPayload_
-    , _scCallback = Nothing
-    }
-
-
--- | V1 error format.
-scXgafv :: Lens' SpreadsheetsCreate (Maybe Xgafv)
-scXgafv = lens _scXgafv (\ s a -> s{_scXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-scUploadProtocol :: Lens' SpreadsheetsCreate (Maybe Text)
-scUploadProtocol
-  = lens _scUploadProtocol
-      (\ s a -> s{_scUploadProtocol = a})
-
--- | OAuth access token.
-scAccessToken :: Lens' SpreadsheetsCreate (Maybe Text)
-scAccessToken
-  = lens _scAccessToken
-      (\ s a -> s{_scAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-scUploadType :: Lens' SpreadsheetsCreate (Maybe Text)
-scUploadType
-  = lens _scUploadType (\ s a -> s{_scUploadType = a})
-
--- | Multipart request metadata.
-scPayload :: Lens' SpreadsheetsCreate Spreadsheet
-scPayload
-  = lens _scPayload (\ s a -> s{_scPayload = a})
-
--- | JSONP
-scCallback :: Lens' SpreadsheetsCreate (Maybe Text)
-scCallback
-  = lens _scCallback (\ s a -> s{_scCallback = a})
-
-instance GoogleRequest SpreadsheetsCreate where
-        type Rs SpreadsheetsCreate = Spreadsheet
-        type Scopes SpreadsheetsCreate =
-             '["https://www.googleapis.com/auth/drive",
-               "https://www.googleapis.com/auth/drive.file",
-               "https://www.googleapis.com/auth/spreadsheets"]
-        requestClient SpreadsheetsCreate'{..}
-          = go _scXgafv _scUploadProtocol _scAccessToken
-              _scUploadType
-              _scCallback
-              (Just AltJSON)
-              _scPayload
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsCreateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Get.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Get.hs
+++ /dev/null
@@ -1,179 +0,0 @@
-{-# 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
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Search.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Search.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/DeveloperMetadata/Search.hs
+++ /dev/null
@@ -1,183 +0,0 @@
-{-# 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
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Get.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Get.hs
+++ /dev/null
@@ -1,202 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Sheets.Spreadsheets.Get
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the spreadsheet at the given ID. The caller must specify the
--- spreadsheet ID. By default, data within grids will not be returned. You
--- can include grid data one of two ways: * Specify a field mask listing
--- your desired fields using the \`fields\` URL parameter in HTTP * Set the
--- includeGridData URL parameter to true. If a field mask is set, the
--- \`includeGridData\` parameter is ignored For large spreadsheets, it is
--- recommended to retrieve only the specific fields of the spreadsheet that
--- you want. To retrieve only subsets of the spreadsheet, use the ranges
--- URL parameter. Multiple ranges can be specified. Limiting the range will
--- return only the portions of the spreadsheet that intersect the requested
--- ranges. Ranges are specified using A1 notation.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.get@.
-module Network.Google.Resource.Sheets.Spreadsheets.Get
-    (
-    -- * REST Resource
-      SpreadsheetsGetResource
-
-    -- * Creating a Request
-    , spreadsheetsGet
-    , SpreadsheetsGet
-
-    -- * Request Lenses
-    , sgXgafv
-    , sgUploadProtocol
-    , sgAccessToken
-    , sgSpreadsheetId
-    , sgUploadType
-    , sgRanges
-    , sgIncludeGridData
-    , sgCallback
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.get@ method which the
--- 'SpreadsheetsGet' request conforms to.
-type SpreadsheetsGetResource =
-     "v4" :>
-       "spreadsheets" :>
-         Capture "spreadsheetId" Text :>
-           QueryParam "$.xgafv" Xgafv :>
-             QueryParam "upload_protocol" Text :>
-               QueryParam "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
--- can include grid data one of two ways: * Specify a field mask listing
--- your desired fields using the \`fields\` URL parameter in HTTP * Set the
--- includeGridData URL parameter to true. If a field mask is set, the
--- \`includeGridData\` parameter is ignored For large spreadsheets, it is
--- recommended to retrieve only the specific fields of the spreadsheet that
--- you want. To retrieve only subsets of the spreadsheet, use the ranges
--- URL parameter. Multiple ranges can be specified. Limiting the range will
--- return only the portions of the spreadsheet that intersect the requested
--- ranges. Ranges are specified using A1 notation.
---
--- /See:/ 'spreadsheetsGet' smart constructor.
-data SpreadsheetsGet =
-  SpreadsheetsGet'
-    { _sgXgafv           :: !(Maybe Xgafv)
-    , _sgUploadProtocol  :: !(Maybe Text)
-    , _sgAccessToken     :: !(Maybe Text)
-    , _sgSpreadsheetId   :: !Text
-    , _sgUploadType      :: !(Maybe Text)
-    , _sgRanges          :: !(Maybe [Text])
-    , _sgIncludeGridData :: !(Maybe Bool)
-    , _sgCallback        :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sgXgafv'
---
--- * 'sgUploadProtocol'
---
--- * 'sgAccessToken'
---
--- * 'sgSpreadsheetId'
---
--- * 'sgUploadType'
---
--- * 'sgRanges'
---
--- * 'sgIncludeGridData'
---
--- * 'sgCallback'
-spreadsheetsGet
-    :: Text -- ^ 'sgSpreadsheetId'
-    -> SpreadsheetsGet
-spreadsheetsGet pSgSpreadsheetId_ =
-  SpreadsheetsGet'
-    { _sgXgafv = Nothing
-    , _sgUploadProtocol = Nothing
-    , _sgAccessToken = Nothing
-    , _sgSpreadsheetId = pSgSpreadsheetId_
-    , _sgUploadType = Nothing
-    , _sgRanges = Nothing
-    , _sgIncludeGridData = Nothing
-    , _sgCallback = Nothing
-    }
-
-
--- | V1 error format.
-sgXgafv :: Lens' SpreadsheetsGet (Maybe Xgafv)
-sgXgafv = lens _sgXgafv (\ s a -> s{_sgXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-sgUploadProtocol :: Lens' SpreadsheetsGet (Maybe Text)
-sgUploadProtocol
-  = lens _sgUploadProtocol
-      (\ s a -> s{_sgUploadProtocol = a})
-
--- | OAuth access token.
-sgAccessToken :: Lens' SpreadsheetsGet (Maybe Text)
-sgAccessToken
-  = lens _sgAccessToken
-      (\ s a -> s{_sgAccessToken = a})
-
--- | The spreadsheet to request.
-sgSpreadsheetId :: Lens' SpreadsheetsGet Text
-sgSpreadsheetId
-  = lens _sgSpreadsheetId
-      (\ s a -> s{_sgSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-sgUploadType :: Lens' SpreadsheetsGet (Maybe Text)
-sgUploadType
-  = lens _sgUploadType (\ s a -> s{_sgUploadType = a})
-
--- | The ranges to retrieve from the spreadsheet.
-sgRanges :: Lens' SpreadsheetsGet [Text]
-sgRanges
-  = lens _sgRanges (\ s a -> s{_sgRanges = a}) .
-      _Default
-      . _Coerce
-
--- | True if grid data should be returned. This parameter is ignored if a
--- field mask was set in the request.
-sgIncludeGridData :: Lens' SpreadsheetsGet (Maybe Bool)
-sgIncludeGridData
-  = lens _sgIncludeGridData
-      (\ s a -> s{_sgIncludeGridData = a})
-
--- | JSONP
-sgCallback :: Lens' SpreadsheetsGet (Maybe Text)
-sgCallback
-  = lens _sgCallback (\ s a -> s{_sgCallback = a})
-
-instance GoogleRequest SpreadsheetsGet where
-        type Rs SpreadsheetsGet = Spreadsheet
-        type Scopes SpreadsheetsGet =
-             '["https://www.googleapis.com/auth/drive",
-               "https://www.googleapis.com/auth/drive.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
-              _sgAccessToken
-              _sgUploadType
-              (_sgRanges ^. _Default)
-              _sgIncludeGridData
-              _sgCallback
-              (Just AltJSON)
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/GetByDataFilter.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/GetByDataFilter.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/GetByDataFilter.hs
+++ /dev/null
@@ -1,193 +0,0 @@
-{-# 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
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Sheets/CopyTo.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Sheets/CopyTo.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Sheets/CopyTo.hs
+++ /dev/null
@@ -1,185 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Copies a single sheet from a spreadsheet to another spreadsheet. Returns
--- the properties of the newly created sheet.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.sheets.copyTo@.
-module Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo
-    (
-    -- * REST Resource
-      SpreadsheetsSheetsCopyToResource
-
-    -- * Creating a Request
-    , spreadsheetsSheetsCopyTo
-    , SpreadsheetsSheetsCopyTo
-
-    -- * Request Lenses
-    , ssctXgafv
-    , ssctUploadProtocol
-    , ssctAccessToken
-    , ssctSpreadsheetId
-    , ssctUploadType
-    , ssctPayload
-    , ssctSheetId
-    , ssctCallback
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.sheets.copyTo@ method which the
--- 'SpreadsheetsSheetsCopyTo' request conforms to.
-type SpreadsheetsSheetsCopyToResource =
-     "v4" :>
-       "spreadsheets" :>
-         Capture "spreadsheetId" Text :>
-           "sheets" :>
-             CaptureMode "sheetId" "copyTo" (Textual Int32) :>
-               QueryParam "$.xgafv" Xgafv :>
-                 QueryParam "upload_protocol" Text :>
-                   QueryParam "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.
---
--- /See:/ 'spreadsheetsSheetsCopyTo' smart constructor.
-data SpreadsheetsSheetsCopyTo =
-  SpreadsheetsSheetsCopyTo'
-    { _ssctXgafv          :: !(Maybe Xgafv)
-    , _ssctUploadProtocol :: !(Maybe Text)
-    , _ssctAccessToken    :: !(Maybe Text)
-    , _ssctSpreadsheetId  :: !Text
-    , _ssctUploadType     :: !(Maybe Text)
-    , _ssctPayload        :: !CopySheetToAnotherSpreadsheetRequest
-    , _ssctSheetId        :: !(Textual Int32)
-    , _ssctCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsSheetsCopyTo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssctXgafv'
---
--- * 'ssctUploadProtocol'
---
--- * 'ssctAccessToken'
---
--- * 'ssctSpreadsheetId'
---
--- * 'ssctUploadType'
---
--- * 'ssctPayload'
---
--- * 'ssctSheetId'
---
--- * 'ssctCallback'
-spreadsheetsSheetsCopyTo
-    :: Text -- ^ 'ssctSpreadsheetId'
-    -> CopySheetToAnotherSpreadsheetRequest -- ^ 'ssctPayload'
-    -> Int32 -- ^ 'ssctSheetId'
-    -> SpreadsheetsSheetsCopyTo
-spreadsheetsSheetsCopyTo pSsctSpreadsheetId_ pSsctPayload_ pSsctSheetId_ =
-  SpreadsheetsSheetsCopyTo'
-    { _ssctXgafv = Nothing
-    , _ssctUploadProtocol = Nothing
-    , _ssctAccessToken = Nothing
-    , _ssctSpreadsheetId = pSsctSpreadsheetId_
-    , _ssctUploadType = Nothing
-    , _ssctPayload = pSsctPayload_
-    , _ssctSheetId = _Coerce # pSsctSheetId_
-    , _ssctCallback = Nothing
-    }
-
-
--- | V1 error format.
-ssctXgafv :: Lens' SpreadsheetsSheetsCopyTo (Maybe Xgafv)
-ssctXgafv
-  = lens _ssctXgafv (\ s a -> s{_ssctXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-ssctUploadProtocol :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)
-ssctUploadProtocol
-  = lens _ssctUploadProtocol
-      (\ s a -> s{_ssctUploadProtocol = a})
-
--- | OAuth access token.
-ssctAccessToken :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)
-ssctAccessToken
-  = lens _ssctAccessToken
-      (\ s a -> s{_ssctAccessToken = a})
-
--- | The ID of the spreadsheet containing the sheet to copy.
-ssctSpreadsheetId :: Lens' SpreadsheetsSheetsCopyTo Text
-ssctSpreadsheetId
-  = lens _ssctSpreadsheetId
-      (\ s a -> s{_ssctSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-ssctUploadType :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)
-ssctUploadType
-  = lens _ssctUploadType
-      (\ s a -> s{_ssctUploadType = a})
-
--- | Multipart request metadata.
-ssctPayload :: Lens' SpreadsheetsSheetsCopyTo CopySheetToAnotherSpreadsheetRequest
-ssctPayload
-  = lens _ssctPayload (\ s a -> s{_ssctPayload = a})
-
--- | The ID of the sheet to copy.
-ssctSheetId :: Lens' SpreadsheetsSheetsCopyTo Int32
-ssctSheetId
-  = lens _ssctSheetId (\ s a -> s{_ssctSheetId = a}) .
-      _Coerce
-
--- | JSONP
-ssctCallback :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)
-ssctCallback
-  = lens _ssctCallback (\ s a -> s{_ssctCallback = a})
-
-instance GoogleRequest SpreadsheetsSheetsCopyTo where
-        type Rs SpreadsheetsSheetsCopyTo = SheetProperties
-        type Scopes SpreadsheetsSheetsCopyTo =
-             '["https://www.googleapis.com/auth/drive",
-               "https://www.googleapis.com/auth/drive.file",
-               "https://www.googleapis.com/auth/spreadsheets"]
-        requestClient SpreadsheetsSheetsCopyTo'{..}
-          = go _ssctSpreadsheetId _ssctSheetId _ssctXgafv
-              _ssctUploadProtocol
-              _ssctAccessToken
-              _ssctUploadType
-              _ssctCallback
-              (Just AltJSON)
-              _ssctPayload
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsSheetsCopyToResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Append.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Append.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Append.hs
+++ /dev/null
@@ -1,273 +0,0 @@
-{-# 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.Append
--- 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)
---
--- 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\/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
--- the sheet (column-wise or row-wise), it does not influence what cell the
--- data starts being written to.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.append@.
-module Network.Google.Resource.Sheets.Spreadsheets.Values.Append
-    (
-    -- * REST Resource
-      SpreadsheetsValuesAppendResource
-
-    -- * Creating a Request
-    , spreadsheetsValuesAppend
-    , SpreadsheetsValuesAppend
-
-    -- * Request Lenses
-    , svaXgafv
-    , svaUploadProtocol
-    , svaAccessToken
-    , svaSpreadsheetId
-    , svaUploadType
-    , svaValueInputOption
-    , svaPayload
-    , svaInsertDataOption
-    , svaRange
-    , svaIncludeValuesInResponse
-    , svaResponseDateTimeRenderOption
-    , svaCallback
-    , svaResponseValueRenderOption
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.values.append@ method which the
--- 'SpreadsheetsValuesAppend' request conforms to.
-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
-
--- | 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\/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
--- the sheet (column-wise or row-wise), it does not influence what cell the
--- data starts being written to.
---
--- /See:/ 'spreadsheetsValuesAppend' smart constructor.
-data SpreadsheetsValuesAppend =
-  SpreadsheetsValuesAppend'
-    { _svaXgafv                        :: !(Maybe Xgafv)
-    , _svaUploadProtocol               :: !(Maybe Text)
-    , _svaAccessToken                  :: !(Maybe Text)
-    , _svaSpreadsheetId                :: !Text
-    , _svaUploadType                   :: !(Maybe Text)
-    , _svaValueInputOption             :: !(Maybe Text)
-    , _svaPayload                      :: !ValueRange
-    , _svaInsertDataOption             :: !(Maybe Text)
-    , _svaRange                        :: !Text
-    , _svaIncludeValuesInResponse      :: !(Maybe Bool)
-    , _svaResponseDateTimeRenderOption :: !(Maybe Text)
-    , _svaCallback                     :: !(Maybe Text)
-    , _svaResponseValueRenderOption    :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsValuesAppend' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'svaXgafv'
---
--- * 'svaUploadProtocol'
---
--- * 'svaAccessToken'
---
--- * 'svaSpreadsheetId'
---
--- * 'svaUploadType'
---
--- * 'svaValueInputOption'
---
--- * 'svaPayload'
---
--- * 'svaInsertDataOption'
---
--- * 'svaRange'
---
--- * 'svaIncludeValuesInResponse'
---
--- * 'svaResponseDateTimeRenderOption'
---
--- * 'svaCallback'
---
--- * 'svaResponseValueRenderOption'
-spreadsheetsValuesAppend
-    :: Text -- ^ 'svaSpreadsheetId'
-    -> ValueRange -- ^ 'svaPayload'
-    -> Text -- ^ 'svaRange'
-    -> SpreadsheetsValuesAppend
-spreadsheetsValuesAppend pSvaSpreadsheetId_ pSvaPayload_ pSvaRange_ =
-  SpreadsheetsValuesAppend'
-    { _svaXgafv = Nothing
-    , _svaUploadProtocol = Nothing
-    , _svaAccessToken = Nothing
-    , _svaSpreadsheetId = pSvaSpreadsheetId_
-    , _svaUploadType = Nothing
-    , _svaValueInputOption = Nothing
-    , _svaPayload = pSvaPayload_
-    , _svaInsertDataOption = Nothing
-    , _svaRange = pSvaRange_
-    , _svaIncludeValuesInResponse = Nothing
-    , _svaResponseDateTimeRenderOption = Nothing
-    , _svaCallback = Nothing
-    , _svaResponseValueRenderOption = Nothing
-    }
-
-
--- | V1 error format.
-svaXgafv :: Lens' SpreadsheetsValuesAppend (Maybe Xgafv)
-svaXgafv = lens _svaXgafv (\ s a -> s{_svaXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-svaUploadProtocol :: Lens' SpreadsheetsValuesAppend (Maybe Text)
-svaUploadProtocol
-  = lens _svaUploadProtocol
-      (\ s a -> s{_svaUploadProtocol = a})
-
--- | OAuth access token.
-svaAccessToken :: Lens' SpreadsheetsValuesAppend (Maybe Text)
-svaAccessToken
-  = lens _svaAccessToken
-      (\ s a -> s{_svaAccessToken = a})
-
--- | The ID of the spreadsheet to update.
-svaSpreadsheetId :: Lens' SpreadsheetsValuesAppend Text
-svaSpreadsheetId
-  = lens _svaSpreadsheetId
-      (\ s a -> s{_svaSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-svaUploadType :: Lens' SpreadsheetsValuesAppend (Maybe Text)
-svaUploadType
-  = lens _svaUploadType
-      (\ s a -> s{_svaUploadType = a})
-
--- | How the input data should be interpreted.
-svaValueInputOption :: Lens' SpreadsheetsValuesAppend (Maybe Text)
-svaValueInputOption
-  = lens _svaValueInputOption
-      (\ s a -> s{_svaValueInputOption = a})
-
--- | Multipart request metadata.
-svaPayload :: Lens' SpreadsheetsValuesAppend ValueRange
-svaPayload
-  = lens _svaPayload (\ s a -> s{_svaPayload = a})
-
--- | How the input data should be inserted.
-svaInsertDataOption :: Lens' SpreadsheetsValuesAppend (Maybe Text)
-svaInsertDataOption
-  = lens _svaInsertDataOption
-      (\ s a -> s{_svaInsertDataOption = 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
-svaRange = lens _svaRange (\ s a -> s{_svaRange = a})
-
--- | Determines if the update response should include the values of the cells
--- that were appended. By default, responses do not include the updated
--- values.
-svaIncludeValuesInResponse :: Lens' SpreadsheetsValuesAppend (Maybe Bool)
-svaIncludeValuesInResponse
-  = lens _svaIncludeValuesInResponse
-      (\ s a -> s{_svaIncludeValuesInResponse = 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].
-svaResponseDateTimeRenderOption :: Lens' SpreadsheetsValuesAppend (Maybe Text)
-svaResponseDateTimeRenderOption
-  = lens _svaResponseDateTimeRenderOption
-      (\ s a -> s{_svaResponseDateTimeRenderOption = a})
-
--- | JSONP
-svaCallback :: Lens' SpreadsheetsValuesAppend (Maybe Text)
-svaCallback
-  = lens _svaCallback (\ s a -> s{_svaCallback = a})
-
--- | Determines how values in the response should be rendered. The default
--- render option is ValueRenderOption.FORMATTED_VALUE.
-svaResponseValueRenderOption :: Lens' SpreadsheetsValuesAppend (Maybe Text)
-svaResponseValueRenderOption
-  = lens _svaResponseValueRenderOption
-      (\ s a -> s{_svaResponseValueRenderOption = a})
-
-instance GoogleRequest SpreadsheetsValuesAppend where
-        type Rs SpreadsheetsValuesAppend =
-             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
-              _svaAccessToken
-              _svaUploadType
-              _svaValueInputOption
-              _svaInsertDataOption
-              _svaIncludeValuesInResponse
-              _svaResponseDateTimeRenderOption
-              _svaCallback
-              _svaResponseValueRenderOption
-              (Just AltJSON)
-              _svaPayload
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsValuesAppendResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClear.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClear.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClear.hs
+++ /dev/null
@@ -1,178 +0,0 @@
-{-# 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.BatchClear
--- 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 ranges. 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.batchClear@.
-module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear
-    (
-    -- * REST Resource
-      SpreadsheetsValuesBatchClearResource
-
-    -- * Creating a Request
-    , spreadsheetsValuesBatchClear
-    , SpreadsheetsValuesBatchClear
-
-    -- * Request Lenses
-    , svbcXgafv
-    , svbcUploadProtocol
-    , svbcAccessToken
-    , svbcSpreadsheetId
-    , svbcUploadType
-    , svbcPayload
-    , svbcCallback
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.values.batchClear@ method which the
--- 'SpreadsheetsValuesBatchClear' request conforms to.
-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
-
--- | 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
--- cleared -- all other properties of the cell (such as formatting, data
--- validation, etc..) are kept.
---
--- /See:/ 'spreadsheetsValuesBatchClear' smart constructor.
-data SpreadsheetsValuesBatchClear =
-  SpreadsheetsValuesBatchClear'
-    { _svbcXgafv          :: !(Maybe Xgafv)
-    , _svbcUploadProtocol :: !(Maybe Text)
-    , _svbcAccessToken    :: !(Maybe Text)
-    , _svbcSpreadsheetId  :: !Text
-    , _svbcUploadType     :: !(Maybe Text)
-    , _svbcPayload        :: !BatchClearValuesRequest
-    , _svbcCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsValuesBatchClear' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'svbcXgafv'
---
--- * 'svbcUploadProtocol'
---
--- * 'svbcAccessToken'
---
--- * 'svbcSpreadsheetId'
---
--- * 'svbcUploadType'
---
--- * 'svbcPayload'
---
--- * 'svbcCallback'
-spreadsheetsValuesBatchClear
-    :: Text -- ^ 'svbcSpreadsheetId'
-    -> BatchClearValuesRequest -- ^ 'svbcPayload'
-    -> SpreadsheetsValuesBatchClear
-spreadsheetsValuesBatchClear pSvbcSpreadsheetId_ pSvbcPayload_ =
-  SpreadsheetsValuesBatchClear'
-    { _svbcXgafv = Nothing
-    , _svbcUploadProtocol = Nothing
-    , _svbcAccessToken = Nothing
-    , _svbcSpreadsheetId = pSvbcSpreadsheetId_
-    , _svbcUploadType = Nothing
-    , _svbcPayload = pSvbcPayload_
-    , _svbcCallback = Nothing
-    }
-
-
--- | V1 error format.
-svbcXgafv :: Lens' SpreadsheetsValuesBatchClear (Maybe Xgafv)
-svbcXgafv
-  = lens _svbcXgafv (\ s a -> s{_svbcXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-svbcUploadProtocol :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)
-svbcUploadProtocol
-  = lens _svbcUploadProtocol
-      (\ s a -> s{_svbcUploadProtocol = a})
-
--- | OAuth access token.
-svbcAccessToken :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)
-svbcAccessToken
-  = lens _svbcAccessToken
-      (\ s a -> s{_svbcAccessToken = a})
-
--- | The ID of the spreadsheet to update.
-svbcSpreadsheetId :: Lens' SpreadsheetsValuesBatchClear Text
-svbcSpreadsheetId
-  = lens _svbcSpreadsheetId
-      (\ s a -> s{_svbcSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-svbcUploadType :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)
-svbcUploadType
-  = lens _svbcUploadType
-      (\ s a -> s{_svbcUploadType = a})
-
--- | Multipart request metadata.
-svbcPayload :: Lens' SpreadsheetsValuesBatchClear BatchClearValuesRequest
-svbcPayload
-  = lens _svbcPayload (\ s a -> s{_svbcPayload = a})
-
--- | JSONP
-svbcCallback :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)
-svbcCallback
-  = lens _svbcCallback (\ s a -> s{_svbcCallback = a})
-
-instance GoogleRequest SpreadsheetsValuesBatchClear
-         where
-        type Rs SpreadsheetsValuesBatchClear =
-             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
-              _svbcAccessToken
-              _svbcUploadType
-              _svbcCallback
-              (Just AltJSON)
-              _svbcPayload
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsValuesBatchClearResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClearByDataFilter.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClearByDataFilter.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchClearByDataFilter.hs
+++ /dev/null
@@ -1,188 +0,0 @@
-{-# 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
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGet.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGet.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGet.hs
+++ /dev/null
@@ -1,223 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns one or more ranges of values from a spreadsheet. The caller must
--- specify the spreadsheet ID and one or more ranges.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchGet@.
-module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet
-    (
-    -- * REST Resource
-      SpreadsheetsValuesBatchGetResource
-
-    -- * Creating a Request
-    , spreadsheetsValuesBatchGet
-    , SpreadsheetsValuesBatchGet
-
-    -- * Request Lenses
-    , svbgXgafv
-    , svbgValueRenderOption
-    , svbgUploadProtocol
-    , svbgAccessToken
-    , svbgSpreadsheetId
-    , svbgUploadType
-    , svbgRanges
-    , svbgDateTimeRenderOption
-    , svbgMajorDimension
-    , svbgCallback
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.values.batchGet@ method which the
--- 'SpreadsheetsValuesBatchGet' request conforms to.
-type SpreadsheetsValuesBatchGetResource =
-     "v4" :>
-       "spreadsheets" :>
-         Capture "spreadsheetId" Text :>
-           "values:batchGet" :>
-             QueryParam "$.xgafv" Xgafv :>
-               QueryParam "valueRenderOption" Text :>
-                 QueryParam "upload_protocol" Text :>
-                   QueryParam "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.
---
--- /See:/ 'spreadsheetsValuesBatchGet' smart constructor.
-data SpreadsheetsValuesBatchGet =
-  SpreadsheetsValuesBatchGet'
-    { _svbgXgafv                :: !(Maybe Xgafv)
-    , _svbgValueRenderOption    :: !(Maybe Text)
-    , _svbgUploadProtocol       :: !(Maybe Text)
-    , _svbgAccessToken          :: !(Maybe Text)
-    , _svbgSpreadsheetId        :: !Text
-    , _svbgUploadType           :: !(Maybe Text)
-    , _svbgRanges               :: !(Maybe [Text])
-    , _svbgDateTimeRenderOption :: !(Maybe Text)
-    , _svbgMajorDimension       :: !(Maybe Text)
-    , _svbgCallback             :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsValuesBatchGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'svbgXgafv'
---
--- * 'svbgValueRenderOption'
---
--- * 'svbgUploadProtocol'
---
--- * 'svbgAccessToken'
---
--- * 'svbgSpreadsheetId'
---
--- * 'svbgUploadType'
---
--- * 'svbgRanges'
---
--- * 'svbgDateTimeRenderOption'
---
--- * 'svbgMajorDimension'
---
--- * 'svbgCallback'
-spreadsheetsValuesBatchGet
-    :: Text -- ^ 'svbgSpreadsheetId'
-    -> SpreadsheetsValuesBatchGet
-spreadsheetsValuesBatchGet pSvbgSpreadsheetId_ =
-  SpreadsheetsValuesBatchGet'
-    { _svbgXgafv = Nothing
-    , _svbgValueRenderOption = Nothing
-    , _svbgUploadProtocol = Nothing
-    , _svbgAccessToken = Nothing
-    , _svbgSpreadsheetId = pSvbgSpreadsheetId_
-    , _svbgUploadType = Nothing
-    , _svbgRanges = Nothing
-    , _svbgDateTimeRenderOption = Nothing
-    , _svbgMajorDimension = Nothing
-    , _svbgCallback = Nothing
-    }
-
-
--- | V1 error format.
-svbgXgafv :: Lens' SpreadsheetsValuesBatchGet (Maybe Xgafv)
-svbgXgafv
-  = lens _svbgXgafv (\ s a -> s{_svbgXgafv = a})
-
--- | How values should be represented in the output. The default render
--- option is ValueRenderOption.FORMATTED_VALUE.
-svbgValueRenderOption :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)
-svbgValueRenderOption
-  = lens _svbgValueRenderOption
-      (\ s a -> s{_svbgValueRenderOption = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-svbgUploadProtocol :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)
-svbgUploadProtocol
-  = lens _svbgUploadProtocol
-      (\ s a -> s{_svbgUploadProtocol = a})
-
--- | OAuth access token.
-svbgAccessToken :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)
-svbgAccessToken
-  = lens _svbgAccessToken
-      (\ s a -> s{_svbgAccessToken = a})
-
--- | The ID of the spreadsheet to retrieve data from.
-svbgSpreadsheetId :: Lens' SpreadsheetsValuesBatchGet Text
-svbgSpreadsheetId
-  = lens _svbgSpreadsheetId
-      (\ s a -> s{_svbgSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-svbgUploadType :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)
-svbgUploadType
-  = lens _svbgUploadType
-      (\ s a -> s{_svbgUploadType = a})
-
--- | The A1 notation of the values to retrieve.
-svbgRanges :: Lens' SpreadsheetsValuesBatchGet [Text]
-svbgRanges
-  = lens _svbgRanges (\ s a -> s{_svbgRanges = a}) .
-      _Default
-      . _Coerce
-
--- | 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].
-svbgDateTimeRenderOption :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)
-svbgDateTimeRenderOption
-  = lens _svbgDateTimeRenderOption
-      (\ s a -> s{_svbgDateTimeRenderOption = a})
-
--- | The major dimension that results should use. For example, if the
--- spreadsheet data is: \`A1=1,B1=2,A2=3,B2=4\`, then requesting
--- \`range=A1:B2,majorDimension=ROWS\` will return \`[[1,2],[3,4]]\`,
--- whereas requesting \`range=A1:B2,majorDimension=COLUMNS\` will return
--- \`[[1,3],[2,4]]\`.
-svbgMajorDimension :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)
-svbgMajorDimension
-  = lens _svbgMajorDimension
-      (\ s a -> s{_svbgMajorDimension = a})
-
--- | JSONP
-svbgCallback :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)
-svbgCallback
-  = lens _svbgCallback (\ s a -> s{_svbgCallback = a})
-
-instance GoogleRequest SpreadsheetsValuesBatchGet
-         where
-        type Rs SpreadsheetsValuesBatchGet =
-             BatchGetValuesResponse
-        type Scopes SpreadsheetsValuesBatchGet =
-             '["https://www.googleapis.com/auth/drive",
-               "https://www.googleapis.com/auth/drive.file",
-               "https://www.googleapis.com/auth/drive.readonly",
-               "https://www.googleapis.com/auth/spreadsheets",
-               "https://www.googleapis.com/auth/spreadsheets.readonly"]
-        requestClient SpreadsheetsValuesBatchGet'{..}
-          = go _svbgSpreadsheetId _svbgXgafv
-              _svbgValueRenderOption
-              _svbgUploadProtocol
-              _svbgAccessToken
-              _svbgUploadType
-              (_svbgRanges ^. _Default)
-              _svbgDateTimeRenderOption
-              _svbgMajorDimension
-              _svbgCallback
-              (Just AltJSON)
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsValuesBatchGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGetByDataFilter.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGetByDataFilter.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchGetByDataFilter.hs
+++ /dev/null
@@ -1,183 +0,0 @@
-{-# 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
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdate.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdate.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdate.hs
+++ /dev/null
@@ -1,177 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Sets values in one or more ranges of a spreadsheet. The caller must
--- specify the spreadsheet ID, a valueInputOption, and one or more
--- ValueRanges.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.batchUpdate@.
-module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate
-    (
-    -- * REST Resource
-      SpreadsheetsValuesBatchUpdateResource
-
-    -- * Creating a Request
-    , spreadsheetsValuesBatchUpdate
-    , SpreadsheetsValuesBatchUpdate
-
-    -- * Request Lenses
-    , svbuXgafv
-    , svbuUploadProtocol
-    , svbuAccessToken
-    , svbuSpreadsheetId
-    , svbuUploadType
-    , svbuPayload
-    , svbuCallback
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.values.batchUpdate@ method which the
--- 'SpreadsheetsValuesBatchUpdate' request conforms to.
-type SpreadsheetsValuesBatchUpdateResource =
-     "v4" :>
-       "spreadsheets" :>
-         Capture "spreadsheetId" Text :>
-           "values:batchUpdate" :>
-             QueryParam "$.xgafv" Xgafv :>
-               QueryParam "upload_protocol" Text :>
-                 QueryParam "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
--- ValueRanges.
---
--- /See:/ 'spreadsheetsValuesBatchUpdate' smart constructor.
-data SpreadsheetsValuesBatchUpdate =
-  SpreadsheetsValuesBatchUpdate'
-    { _svbuXgafv          :: !(Maybe Xgafv)
-    , _svbuUploadProtocol :: !(Maybe Text)
-    , _svbuAccessToken    :: !(Maybe Text)
-    , _svbuSpreadsheetId  :: !Text
-    , _svbuUploadType     :: !(Maybe Text)
-    , _svbuPayload        :: !BatchUpdateValuesRequest
-    , _svbuCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsValuesBatchUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'svbuXgafv'
---
--- * 'svbuUploadProtocol'
---
--- * 'svbuAccessToken'
---
--- * 'svbuSpreadsheetId'
---
--- * 'svbuUploadType'
---
--- * 'svbuPayload'
---
--- * 'svbuCallback'
-spreadsheetsValuesBatchUpdate
-    :: Text -- ^ 'svbuSpreadsheetId'
-    -> BatchUpdateValuesRequest -- ^ 'svbuPayload'
-    -> SpreadsheetsValuesBatchUpdate
-spreadsheetsValuesBatchUpdate pSvbuSpreadsheetId_ pSvbuPayload_ =
-  SpreadsheetsValuesBatchUpdate'
-    { _svbuXgafv = Nothing
-    , _svbuUploadProtocol = Nothing
-    , _svbuAccessToken = Nothing
-    , _svbuSpreadsheetId = pSvbuSpreadsheetId_
-    , _svbuUploadType = Nothing
-    , _svbuPayload = pSvbuPayload_
-    , _svbuCallback = Nothing
-    }
-
-
--- | V1 error format.
-svbuXgafv :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Xgafv)
-svbuXgafv
-  = lens _svbuXgafv (\ s a -> s{_svbuXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-svbuUploadProtocol :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)
-svbuUploadProtocol
-  = lens _svbuUploadProtocol
-      (\ s a -> s{_svbuUploadProtocol = a})
-
--- | OAuth access token.
-svbuAccessToken :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)
-svbuAccessToken
-  = lens _svbuAccessToken
-      (\ s a -> s{_svbuAccessToken = a})
-
--- | The ID of the spreadsheet to update.
-svbuSpreadsheetId :: Lens' SpreadsheetsValuesBatchUpdate Text
-svbuSpreadsheetId
-  = lens _svbuSpreadsheetId
-      (\ s a -> s{_svbuSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-svbuUploadType :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)
-svbuUploadType
-  = lens _svbuUploadType
-      (\ s a -> s{_svbuUploadType = a})
-
--- | Multipart request metadata.
-svbuPayload :: Lens' SpreadsheetsValuesBatchUpdate BatchUpdateValuesRequest
-svbuPayload
-  = lens _svbuPayload (\ s a -> s{_svbuPayload = a})
-
--- | JSONP
-svbuCallback :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)
-svbuCallback
-  = lens _svbuCallback (\ s a -> s{_svbuCallback = a})
-
-instance GoogleRequest SpreadsheetsValuesBatchUpdate
-         where
-        type Rs SpreadsheetsValuesBatchUpdate =
-             BatchUpdateValuesResponse
-        type Scopes SpreadsheetsValuesBatchUpdate =
-             '["https://www.googleapis.com/auth/drive",
-               "https://www.googleapis.com/auth/drive.file",
-               "https://www.googleapis.com/auth/spreadsheets"]
-        requestClient SpreadsheetsValuesBatchUpdate'{..}
-          = go _svbuSpreadsheetId _svbuXgafv
-              _svbuUploadProtocol
-              _svbuAccessToken
-              _svbuUploadType
-              _svbuCallback
-              (Just AltJSON)
-              _svbuPayload
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy ::
-                         Proxy SpreadsheetsValuesBatchUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdateByDataFilter.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdateByDataFilter.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/BatchUpdateByDataFilter.hs
+++ /dev/null
@@ -1,184 +0,0 @@
-{-# 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
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Clear.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Clear.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Clear.hs
+++ /dev/null
@@ -1,186 +0,0 @@
-{-# 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.Clear
--- 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 values from a spreadsheet. The caller must specify the
--- spreadsheet ID and range. 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.clear@.
-module Network.Google.Resource.Sheets.Spreadsheets.Values.Clear
-    (
-    -- * REST Resource
-      SpreadsheetsValuesClearResource
-
-    -- * Creating a Request
-    , spreadsheetsValuesClear
-    , SpreadsheetsValuesClear
-
-    -- * Request Lenses
-    , svcXgafv
-    , svcUploadProtocol
-    , svcAccessToken
-    , svcSpreadsheetId
-    , svcUploadType
-    , svcPayload
-    , svcRange
-    , svcCallback
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.values.clear@ method which the
--- 'SpreadsheetsValuesClear' request conforms to.
-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
-
--- | Clears values from a spreadsheet. The caller must specify the
--- spreadsheet ID and range. Only values are cleared -- all other
--- properties of the cell (such as formatting, data validation, etc..) are
--- kept.
---
--- /See:/ 'spreadsheetsValuesClear' smart constructor.
-data SpreadsheetsValuesClear =
-  SpreadsheetsValuesClear'
-    { _svcXgafv          :: !(Maybe Xgafv)
-    , _svcUploadProtocol :: !(Maybe Text)
-    , _svcAccessToken    :: !(Maybe Text)
-    , _svcSpreadsheetId  :: !Text
-    , _svcUploadType     :: !(Maybe Text)
-    , _svcPayload        :: !ClearValuesRequest
-    , _svcRange          :: !Text
-    , _svcCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsValuesClear' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'svcXgafv'
---
--- * 'svcUploadProtocol'
---
--- * 'svcAccessToken'
---
--- * 'svcSpreadsheetId'
---
--- * 'svcUploadType'
---
--- * 'svcPayload'
---
--- * 'svcRange'
---
--- * 'svcCallback'
-spreadsheetsValuesClear
-    :: Text -- ^ 'svcSpreadsheetId'
-    -> ClearValuesRequest -- ^ 'svcPayload'
-    -> Text -- ^ 'svcRange'
-    -> SpreadsheetsValuesClear
-spreadsheetsValuesClear pSvcSpreadsheetId_ pSvcPayload_ pSvcRange_ =
-  SpreadsheetsValuesClear'
-    { _svcXgafv = Nothing
-    , _svcUploadProtocol = Nothing
-    , _svcAccessToken = Nothing
-    , _svcSpreadsheetId = pSvcSpreadsheetId_
-    , _svcUploadType = Nothing
-    , _svcPayload = pSvcPayload_
-    , _svcRange = pSvcRange_
-    , _svcCallback = Nothing
-    }
-
-
--- | V1 error format.
-svcXgafv :: Lens' SpreadsheetsValuesClear (Maybe Xgafv)
-svcXgafv = lens _svcXgafv (\ s a -> s{_svcXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-svcUploadProtocol :: Lens' SpreadsheetsValuesClear (Maybe Text)
-svcUploadProtocol
-  = lens _svcUploadProtocol
-      (\ s a -> s{_svcUploadProtocol = a})
-
--- | OAuth access token.
-svcAccessToken :: Lens' SpreadsheetsValuesClear (Maybe Text)
-svcAccessToken
-  = lens _svcAccessToken
-      (\ s a -> s{_svcAccessToken = a})
-
--- | The ID of the spreadsheet to update.
-svcSpreadsheetId :: Lens' SpreadsheetsValuesClear Text
-svcSpreadsheetId
-  = lens _svcSpreadsheetId
-      (\ s a -> s{_svcSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-svcUploadType :: Lens' SpreadsheetsValuesClear (Maybe Text)
-svcUploadType
-  = lens _svcUploadType
-      (\ s a -> s{_svcUploadType = a})
-
--- | Multipart request metadata.
-svcPayload :: Lens' SpreadsheetsValuesClear ClearValuesRequest
-svcPayload
-  = lens _svcPayload (\ s a -> s{_svcPayload = a})
-
--- | The A1 notation of the values to clear.
-svcRange :: Lens' SpreadsheetsValuesClear Text
-svcRange = lens _svcRange (\ s a -> s{_svcRange = a})
-
--- | JSONP
-svcCallback :: Lens' SpreadsheetsValuesClear (Maybe Text)
-svcCallback
-  = lens _svcCallback (\ s a -> s{_svcCallback = a})
-
-instance GoogleRequest SpreadsheetsValuesClear where
-        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
-              _svcAccessToken
-              _svcUploadType
-              _svcCallback
-              (Just AltJSON)
-              _svcPayload
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsValuesClearResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Get.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Get.hs
+++ /dev/null
@@ -1,217 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Sheets.Spreadsheets.Values.Get
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a range of values from a spreadsheet. The caller must specify
--- the spreadsheet ID and a range.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.get@.
-module Network.Google.Resource.Sheets.Spreadsheets.Values.Get
-    (
-    -- * REST Resource
-      SpreadsheetsValuesGetResource
-
-    -- * Creating a Request
-    , spreadsheetsValuesGet
-    , SpreadsheetsValuesGet
-
-    -- * Request Lenses
-    , svgXgafv
-    , svgValueRenderOption
-    , svgUploadProtocol
-    , svgAccessToken
-    , svgSpreadsheetId
-    , svgUploadType
-    , svgRange
-    , svgDateTimeRenderOption
-    , svgMajorDimension
-    , svgCallback
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.values.get@ method which the
--- 'SpreadsheetsValuesGet' request conforms to.
-type SpreadsheetsValuesGetResource =
-     "v4" :>
-       "spreadsheets" :>
-         Capture "spreadsheetId" Text :>
-           "values" :>
-             Capture "range" Text :>
-               QueryParam "$.xgafv" Xgafv :>
-                 QueryParam "valueRenderOption" Text :>
-                   QueryParam "upload_protocol" Text :>
-                     QueryParam "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.
---
--- /See:/ 'spreadsheetsValuesGet' smart constructor.
-data SpreadsheetsValuesGet =
-  SpreadsheetsValuesGet'
-    { _svgXgafv                :: !(Maybe Xgafv)
-    , _svgValueRenderOption    :: !(Maybe Text)
-    , _svgUploadProtocol       :: !(Maybe Text)
-    , _svgAccessToken          :: !(Maybe Text)
-    , _svgSpreadsheetId        :: !Text
-    , _svgUploadType           :: !(Maybe Text)
-    , _svgRange                :: !Text
-    , _svgDateTimeRenderOption :: !(Maybe Text)
-    , _svgMajorDimension       :: !(Maybe Text)
-    , _svgCallback             :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsValuesGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'svgXgafv'
---
--- * 'svgValueRenderOption'
---
--- * 'svgUploadProtocol'
---
--- * 'svgAccessToken'
---
--- * 'svgSpreadsheetId'
---
--- * 'svgUploadType'
---
--- * 'svgRange'
---
--- * 'svgDateTimeRenderOption'
---
--- * 'svgMajorDimension'
---
--- * 'svgCallback'
-spreadsheetsValuesGet
-    :: Text -- ^ 'svgSpreadsheetId'
-    -> Text -- ^ 'svgRange'
-    -> SpreadsheetsValuesGet
-spreadsheetsValuesGet pSvgSpreadsheetId_ pSvgRange_ =
-  SpreadsheetsValuesGet'
-    { _svgXgafv = Nothing
-    , _svgValueRenderOption = Nothing
-    , _svgUploadProtocol = Nothing
-    , _svgAccessToken = Nothing
-    , _svgSpreadsheetId = pSvgSpreadsheetId_
-    , _svgUploadType = Nothing
-    , _svgRange = pSvgRange_
-    , _svgDateTimeRenderOption = Nothing
-    , _svgMajorDimension = Nothing
-    , _svgCallback = Nothing
-    }
-
-
--- | V1 error format.
-svgXgafv :: Lens' SpreadsheetsValuesGet (Maybe Xgafv)
-svgXgafv = lens _svgXgafv (\ s a -> s{_svgXgafv = a})
-
--- | How values should be represented in the output. The default render
--- option is ValueRenderOption.FORMATTED_VALUE.
-svgValueRenderOption :: Lens' SpreadsheetsValuesGet (Maybe Text)
-svgValueRenderOption
-  = lens _svgValueRenderOption
-      (\ s a -> s{_svgValueRenderOption = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-svgUploadProtocol :: Lens' SpreadsheetsValuesGet (Maybe Text)
-svgUploadProtocol
-  = lens _svgUploadProtocol
-      (\ s a -> s{_svgUploadProtocol = a})
-
--- | OAuth access token.
-svgAccessToken :: Lens' SpreadsheetsValuesGet (Maybe Text)
-svgAccessToken
-  = lens _svgAccessToken
-      (\ s a -> s{_svgAccessToken = a})
-
--- | The ID of the spreadsheet to retrieve data from.
-svgSpreadsheetId :: Lens' SpreadsheetsValuesGet Text
-svgSpreadsheetId
-  = lens _svgSpreadsheetId
-      (\ s a -> s{_svgSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-svgUploadType :: Lens' SpreadsheetsValuesGet (Maybe Text)
-svgUploadType
-  = lens _svgUploadType
-      (\ s a -> s{_svgUploadType = a})
-
--- | The A1 notation of the values to retrieve.
-svgRange :: Lens' SpreadsheetsValuesGet Text
-svgRange = lens _svgRange (\ s a -> s{_svgRange = a})
-
--- | How dates, times, and durations should be represented in the output.
--- This is ignored if value_render_option is FORMATTED_VALUE. The default
--- dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].
-svgDateTimeRenderOption :: Lens' SpreadsheetsValuesGet (Maybe Text)
-svgDateTimeRenderOption
-  = lens _svgDateTimeRenderOption
-      (\ s a -> s{_svgDateTimeRenderOption = a})
-
--- | The major dimension that results should use. For example, if the
--- spreadsheet data is: \`A1=1,B1=2,A2=3,B2=4\`, then requesting
--- \`range=A1:B2,majorDimension=ROWS\` will return \`[[1,2],[3,4]]\`,
--- whereas requesting \`range=A1:B2,majorDimension=COLUMNS\` will return
--- \`[[1,3],[2,4]]\`.
-svgMajorDimension :: Lens' SpreadsheetsValuesGet (Maybe Text)
-svgMajorDimension
-  = lens _svgMajorDimension
-      (\ s a -> s{_svgMajorDimension = a})
-
--- | JSONP
-svgCallback :: Lens' SpreadsheetsValuesGet (Maybe Text)
-svgCallback
-  = lens _svgCallback (\ s a -> s{_svgCallback = a})
-
-instance GoogleRequest SpreadsheetsValuesGet where
-        type Rs SpreadsheetsValuesGet = ValueRange
-        type Scopes SpreadsheetsValuesGet =
-             '["https://www.googleapis.com/auth/drive",
-               "https://www.googleapis.com/auth/drive.file",
-               "https://www.googleapis.com/auth/drive.readonly",
-               "https://www.googleapis.com/auth/spreadsheets",
-               "https://www.googleapis.com/auth/spreadsheets.readonly"]
-        requestClient SpreadsheetsValuesGet'{..}
-          = go _svgSpreadsheetId _svgRange _svgXgafv
-              _svgValueRenderOption
-              _svgUploadProtocol
-              _svgAccessToken
-              _svgUploadType
-              _svgDateTimeRenderOption
-              _svgMajorDimension
-              _svgCallback
-              (Just AltJSON)
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsValuesGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Update.hs b/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Sheets/Spreadsheets/Values/Update.hs
+++ /dev/null
@@ -1,243 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Sheets.Spreadsheets.Values.Update
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Sets values in a range of a spreadsheet. The caller must specify the
--- spreadsheet ID, range, and a valueInputOption.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference> for @sheets.spreadsheets.values.update@.
-module Network.Google.Resource.Sheets.Spreadsheets.Values.Update
-    (
-    -- * REST Resource
-      SpreadsheetsValuesUpdateResource
-
-    -- * Creating a Request
-    , spreadsheetsValuesUpdate
-    , SpreadsheetsValuesUpdate
-
-    -- * Request Lenses
-    , svuXgafv
-    , svuUploadProtocol
-    , svuAccessToken
-    , svuSpreadsheetId
-    , svuUploadType
-    , svuValueInputOption
-    , svuPayload
-    , svuRange
-    , svuIncludeValuesInResponse
-    , svuResponseDateTimeRenderOption
-    , svuCallback
-    , svuResponseValueRenderOption
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types
-
--- | A resource alias for @sheets.spreadsheets.values.update@ method which the
--- 'SpreadsheetsValuesUpdate' request conforms to.
-type SpreadsheetsValuesUpdateResource =
-     "v4" :>
-       "spreadsheets" :>
-         Capture "spreadsheetId" Text :>
-           "values" :>
-             Capture "range" Text :>
-               QueryParam "$.xgafv" Xgafv :>
-                 QueryParam "upload_protocol" Text :>
-                   QueryParam "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.
---
--- /See:/ 'spreadsheetsValuesUpdate' smart constructor.
-data SpreadsheetsValuesUpdate =
-  SpreadsheetsValuesUpdate'
-    { _svuXgafv                        :: !(Maybe Xgafv)
-    , _svuUploadProtocol               :: !(Maybe Text)
-    , _svuAccessToken                  :: !(Maybe Text)
-    , _svuSpreadsheetId                :: !Text
-    , _svuUploadType                   :: !(Maybe Text)
-    , _svuValueInputOption             :: !(Maybe Text)
-    , _svuPayload                      :: !ValueRange
-    , _svuRange                        :: !Text
-    , _svuIncludeValuesInResponse      :: !(Maybe Bool)
-    , _svuResponseDateTimeRenderOption :: !(Maybe Text)
-    , _svuCallback                     :: !(Maybe Text)
-    , _svuResponseValueRenderOption    :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetsValuesUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'svuXgafv'
---
--- * 'svuUploadProtocol'
---
--- * 'svuAccessToken'
---
--- * 'svuSpreadsheetId'
---
--- * 'svuUploadType'
---
--- * 'svuValueInputOption'
---
--- * 'svuPayload'
---
--- * 'svuRange'
---
--- * 'svuIncludeValuesInResponse'
---
--- * 'svuResponseDateTimeRenderOption'
---
--- * 'svuCallback'
---
--- * 'svuResponseValueRenderOption'
-spreadsheetsValuesUpdate
-    :: Text -- ^ 'svuSpreadsheetId'
-    -> ValueRange -- ^ 'svuPayload'
-    -> Text -- ^ 'svuRange'
-    -> SpreadsheetsValuesUpdate
-spreadsheetsValuesUpdate pSvuSpreadsheetId_ pSvuPayload_ pSvuRange_ =
-  SpreadsheetsValuesUpdate'
-    { _svuXgafv = Nothing
-    , _svuUploadProtocol = Nothing
-    , _svuAccessToken = Nothing
-    , _svuSpreadsheetId = pSvuSpreadsheetId_
-    , _svuUploadType = Nothing
-    , _svuValueInputOption = Nothing
-    , _svuPayload = pSvuPayload_
-    , _svuRange = pSvuRange_
-    , _svuIncludeValuesInResponse = Nothing
-    , _svuResponseDateTimeRenderOption = Nothing
-    , _svuCallback = Nothing
-    , _svuResponseValueRenderOption = Nothing
-    }
-
-
--- | V1 error format.
-svuXgafv :: Lens' SpreadsheetsValuesUpdate (Maybe Xgafv)
-svuXgafv = lens _svuXgafv (\ s a -> s{_svuXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-svuUploadProtocol :: Lens' SpreadsheetsValuesUpdate (Maybe Text)
-svuUploadProtocol
-  = lens _svuUploadProtocol
-      (\ s a -> s{_svuUploadProtocol = a})
-
--- | OAuth access token.
-svuAccessToken :: Lens' SpreadsheetsValuesUpdate (Maybe Text)
-svuAccessToken
-  = lens _svuAccessToken
-      (\ s a -> s{_svuAccessToken = a})
-
--- | The ID of the spreadsheet to update.
-svuSpreadsheetId :: Lens' SpreadsheetsValuesUpdate Text
-svuSpreadsheetId
-  = lens _svuSpreadsheetId
-      (\ s a -> s{_svuSpreadsheetId = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-svuUploadType :: Lens' SpreadsheetsValuesUpdate (Maybe Text)
-svuUploadType
-  = lens _svuUploadType
-      (\ s a -> s{_svuUploadType = a})
-
--- | How the input data should be interpreted.
-svuValueInputOption :: Lens' SpreadsheetsValuesUpdate (Maybe Text)
-svuValueInputOption
-  = lens _svuValueInputOption
-      (\ s a -> s{_svuValueInputOption = a})
-
--- | Multipart request metadata.
-svuPayload :: Lens' SpreadsheetsValuesUpdate ValueRange
-svuPayload
-  = lens _svuPayload (\ s a -> s{_svuPayload = a})
-
--- | The A1 notation of the values to update.
-svuRange :: Lens' SpreadsheetsValuesUpdate Text
-svuRange = lens _svuRange (\ s a -> s{_svuRange = 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. 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).
-svuIncludeValuesInResponse :: Lens' SpreadsheetsValuesUpdate (Maybe Bool)
-svuIncludeValuesInResponse
-  = lens _svuIncludeValuesInResponse
-      (\ s a -> s{_svuIncludeValuesInResponse = 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.
-svuResponseDateTimeRenderOption :: Lens' SpreadsheetsValuesUpdate (Maybe Text)
-svuResponseDateTimeRenderOption
-  = lens _svuResponseDateTimeRenderOption
-      (\ s a -> s{_svuResponseDateTimeRenderOption = a})
-
--- | JSONP
-svuCallback :: Lens' SpreadsheetsValuesUpdate (Maybe Text)
-svuCallback
-  = lens _svuCallback (\ s a -> s{_svuCallback = a})
-
--- | Determines how values in the response should be rendered. The default
--- render option is ValueRenderOption.FORMATTED_VALUE.
-svuResponseValueRenderOption :: Lens' SpreadsheetsValuesUpdate (Maybe Text)
-svuResponseValueRenderOption
-  = lens _svuResponseValueRenderOption
-      (\ s a -> s{_svuResponseValueRenderOption = a})
-
-instance GoogleRequest SpreadsheetsValuesUpdate where
-        type Rs SpreadsheetsValuesUpdate =
-             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
-              _svuAccessToken
-              _svuUploadType
-              _svuValueInputOption
-              _svuIncludeValuesInResponse
-              _svuResponseDateTimeRenderOption
-              _svuCallback
-              _svuResponseValueRenderOption
-              (Just AltJSON)
-              _svuPayload
-              sheetsService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy SpreadsheetsValuesUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Sheets.hs b/gen/Network/Google/Sheets.hs
deleted file mode 100644
--- a/gen/Network/Google/Sheets.hs
+++ /dev/null
@@ -1,1733 +0,0 @@
-{-# LANGUAGE DataKinds         #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE TypeOperators     #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- |
--- Module      : Network.Google.Sheets
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Reads and writes Google Sheets.
---
--- /See:/ <https://developers.google.com/sheets/ Google Sheets API Reference>
-module Network.Google.Sheets
-    (
-    -- * Service Configuration
-      sheetsService
-
-    -- * OAuth Scopes
-    , spreadsheetsReadOnlyScope
-    , driveReadOnlyScope
-    , driveScope
-    , driveFileScope
-    , spreadsheetsScope
-
-    -- * API Declaration
-    , SheetsAPI
-
-    -- * Resources
-
-    -- ** sheets.spreadsheets.batchUpdate
-    , module Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate
-
-    -- ** sheets.spreadsheets.create
-    , module Network.Google.Resource.Sheets.Spreadsheets.Create
-
-    -- ** sheets.spreadsheets.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
-
-    -- ** sheets.spreadsheets.values.append
-    , module Network.Google.Resource.Sheets.Spreadsheets.Values.Append
-
-    -- ** 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
-
-    -- ** sheets.spreadsheets.values.get
-    , module Network.Google.Resource.Sheets.Spreadsheets.Values.Get
-
-    -- ** sheets.spreadsheets.values.update
-    , module Network.Google.Resource.Sheets.Spreadsheets.Values.Update
-
-    -- * Types
-
-    -- ** BasicChartSpecStackedType
-    , BasicChartSpecStackedType (..)
-
-    -- ** PivotGroupSortValueBucket
-    , PivotGroupSortValueBucket
-    , pivotGroupSortValueBucket
-    , pgsvbBuckets
-    , pgsvbValuesIndex
-
-    -- ** ValueRange
-    , ValueRange
-    , valueRange
-    , vrValues
-    , vrRange
-    , vrMajorDimension
-
-    -- ** SortRangeRequest
-    , SortRangeRequest
-    , sortRangeRequest
-    , srrSortSpecs
-    , srrRange
-
-    -- ** CopyPasteRequestPasteType
-    , CopyPasteRequestPasteType (..)
-
-    -- ** DeveloperMetadataLookupLocationMatchingStrategy
-    , DeveloperMetadataLookupLocationMatchingStrategy (..)
-
-    -- ** BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption
-    , BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption (..)
-
-    -- ** DeleteNamedRangeRequest
-    , DeleteNamedRangeRequest
-    , deleteNamedRangeRequest
-    , dnrrNamedRangeId
-
-    -- ** UpdateNamedRangeRequest
-    , UpdateNamedRangeRequest
-    , updateNamedRangeRequest
-    , unrrNamedRange
-    , unrrFields
-
-    -- ** BasicChartAxisPosition
-    , BasicChartAxisPosition (..)
-
-    -- ** ChartData
-    , ChartData
-    , chartData
-    , cdSourceRange
-
-    -- ** BatchClearValuesRequest
-    , BatchClearValuesRequest
-    , 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
-
-    -- ** BOrders
-    , BOrders
-    , bOrders
-    , boBottom
-    , boLeft
-    , 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
-    , asrProperties
-
-    -- ** SortSpec
-    , SortSpec
-    , sortSpec
-    , ssSortOrder
-    , ssDimensionIndex
-
-    -- ** DimensionGroup
-    , DimensionGroup
-    , dimensionGroup
-    , dgCollapsed
-    , dgRange
-    , dgDepth
-
-    -- ** BatchUpdateValuesRequestResponseDateTimeRenderOption
-    , BatchUpdateValuesRequestResponseDateTimeRenderOption (..)
-
-    -- ** CopyPasteRequest
-    , CopyPasteRequest
-    , copyPasteRequest
-    , cprDestination
-    , cprSource
-    , cprPasteOrientation
-    , cprPasteType
-
-    -- ** GridRange
-    , GridRange
-    , gridRange
-    , grEndColumnIndex
-    , grStartColumnIndex
-    , grEndRowIndex
-    , grStartRowIndex
-    , grSheetId
-
-    -- ** AppendDimensionRequestDimension
-    , AppendDimensionRequestDimension (..)
-
-    -- ** AddFilterViewResponse
-    , AddFilterViewResponse
-    , addFilterViewResponse
-    , afvrFilter
-
-    -- ** DimensionRangeDimension
-    , DimensionRangeDimension (..)
-
-    -- ** BooleanCondition
-    , BooleanCondition
-    , booleanCondition
-    , bcValues
-    , bcType
-
-    -- ** AutoResizeDimensionsRequest
-    , AutoResizeDimensionsRequest
-    , autoResizeDimensionsRequest
-    , ardrDimensions
-
-    -- ** BubbleChartSpec
-    , BubbleChartSpec
-    , bubbleChartSpec
-    , bcsBubbleTextStyle
-    , bcsBubbleBOrderColor
-    , bcsLegendPosition
-    , bcsDomain
-    , bcsSeries
-    , bcsBubbleLabels
-    , bcsGroupIds
-    , bcsBubbleMinRadiusSize
-    , bcsBubbleMaxRadiusSize
-    , bcsBubbleOpacity
-    , bcsBubbleSizes
-
-    -- ** DeleteRangeRequest
-    , DeleteRangeRequest
-    , deleteRangeRequest
-    , drrShiftDimension
-    , drrRange
-
-    -- ** Sheet
-    , Sheet
-    , sheet
-    , sColumnGroups
-    , sData
-    , sMerges
-    , sRowGroups
-    , sProtectedRanges
-    , sBandedRanges
-    , sCharts
-    , sBasicFilter
-    , sDeveloperMetadata
-    , sConditionalFormats
-    , sFilterViews
-    , sProperties
-
-    -- ** GridCoordinate
-    , GridCoordinate
-    , gridCoordinate
-    , gcColumnIndex
-    , gcRowIndex
-    , gcSheetId
-
-    -- ** ClearValuesResponse
-    , ClearValuesResponse
-    , clearValuesResponse
-    , cvrClearedRange
-    , cvrSpreadsheetId
-
-    -- ** ClearBasicFilterRequest
-    , ClearBasicFilterRequest
-    , clearBasicFilterRequest
-    , cbfrSheetId
-
-    -- ** BatchGetValuesByDataFilterRequestValueRenderOption
-    , BatchGetValuesByDataFilterRequestValueRenderOption (..)
-
-    -- ** UpdateEmbeddedObjectPositionRequest
-    , UpdateEmbeddedObjectPositionRequest
-    , updateEmbeddedObjectPositionRequest
-    , ueoprNewPosition
-    , ueoprObjectId
-    , ueoprFields
-
-    -- ** SourceAndDestinationDimension
-    , SourceAndDestinationDimension (..)
-
-    -- ** BooleanRule
-    , BooleanRule
-    , booleanRule
-    , brFormat
-    , brCondition
-
-    -- ** CellFormatWrapStrategy
-    , CellFormatWrapStrategy (..)
-
-    -- ** BatchGetValuesByDataFilterResponse
-    , BatchGetValuesByDataFilterResponse
-    , batchGetValuesByDataFilterResponse
-    , bgvbdfrSpreadsheetId
-    , bgvbdfrValueRanges
-
-    -- ** SourceAndDestination
-    , SourceAndDestination
-    , sourceAndDestination
-    , sadDimension
-    , sadSource
-    , sadFillLength
-
-    -- ** PasteDataRequest
-    , PasteDataRequest
-    , pasteDataRequest
-    , pdrData
-    , pdrCoordinate
-    , pdrHTML
-    , pdrType
-    , pdrDelimiter
-
-    -- ** BatchUpdateValuesRequestValueInputOption
-    , BatchUpdateValuesRequestValueInputOption (..)
-
-    -- ** AppendCellsRequest
-    , AppendCellsRequest
-    , appendCellsRequest
-    , acrRows
-    , acrSheetId
-    , acrFields
-
-    -- ** FindReplaceResponse
-    , FindReplaceResponse
-    , findReplaceResponse
-    , frrValuesChanged
-    , frrFormulasChanged
-    , frrRowsChanged
-    , frrSheetsChanged
-    , frrOccurrencesChanged
-
-    -- ** AddDimensionGroupResponse
-    , AddDimensionGroupResponse
-    , addDimensionGroupResponse
-    , adgrDimensionGroups
-
-    -- ** PieChartSpec
-    , PieChartSpec
-    , pieChartSpec
-    , pcsPieHole
-    , pcsLegendPosition
-    , pcsDomain
-    , pcsSeries
-    , pcsThreeDimensional
-
-    -- ** BatchUpdateValuesByDataFilterResponse
-    , BatchUpdateValuesByDataFilterResponse
-    , batchUpdateValuesByDataFilterResponse
-    , buvbdfrTotalUpdatedColumns
-    , buvbdfrResponses
-    , buvbdfrSpreadsheetId
-    , buvbdfrTotalUpdatedSheets
-    , buvbdfrTotalUpdatedCells
-    , buvbdfrTotalUpdatedRows
-
-    -- ** TextPositionHorizontalAlignment
-    , TextPositionHorizontalAlignment (..)
-
-    -- ** AppendValuesResponse
-    , AppendValuesResponse
-    , appendValuesResponse
-    , avrSpreadsheetId
-    , avrUpdates
-    , avrTableRange
-
-    -- ** DeveloperMetadataVisibility
-    , DeveloperMetadataVisibility (..)
-
-    -- ** BatchUpdateValuesRequestResponseValueRenderOption
-    , BatchUpdateValuesRequestResponseValueRenderOption (..)
-
-    -- ** DataValidationRule
-    , DataValidationRule
-    , dataValidationRule
-    , dvrShowCustomUi
-    , dvrInputMessage
-    , dvrStrict
-    , dvrCondition
-
-    -- ** FilterView
-    , FilterView
-    , filterView
-    , fvSortSpecs
-    , fvNamedRangeId
-    , fvRange
-    , fvFilterViewId
-    , fvTitle
-    , fvCriteria
-
-    -- ** Color
-    , Color
-    , color
-    , cRed
-    , cAlpha
-    , cGreen
-    , cBlue
-
-    -- ** DeleteFilterViewRequest
-    , DeleteFilterViewRequest
-    , deleteFilterViewRequest
-    , dfvrFilterId
-
-    -- ** UpdateFilterViewRequest
-    , UpdateFilterViewRequest
-    , updateFilterViewRequest
-    , ufvrFilter
-    , ufvrFields
-
-    -- ** BasicChartSeries
-    , BasicChartSeries
-    , basicChartSeries
-    , bTargetAxis
-    , bColor
-    , bSeries
-    , bType
-    , bLineStyle
-
-    -- ** PivotGroupRule
-    , PivotGroupRule
-    , pivotGroupRule
-    , pgrDateTimeRule
-    , pgrManualRule
-    , pgrHistogramRule
-
-    -- ** AddProtectedRangeRequest
-    , AddProtectedRangeRequest
-    , addProtectedRangeRequest
-    , aprrProtectedRange
-
-    -- ** PieChartSpecLegendPosition
-    , PieChartSpecLegendPosition (..)
-
-    -- ** RepeatCellRequest
-    , RepeatCellRequest
-    , repeatCellRequest
-    , rcrCell
-    , rcrRange
-    , rcrFields
-
-    -- ** ConditionValue
-    , ConditionValue
-    , conditionValue
-    , cvRelativeDate
-    , cvUserEnteredValue
-
-    -- ** DeleteDimensionRequest
-    , DeleteDimensionRequest
-    , deleteDimensionRequest
-    , ddrRange
-
-    -- ** ClearValuesRequest
-    , ClearValuesRequest
-    , clearValuesRequest
-
-    -- ** FindReplaceRequest
-    , FindReplaceRequest
-    , findReplaceRequest
-    , frrMatchCase
-    , frrAllSheets
-    , frrIncludeFormulas
-    , frrMatchEntireCell
-    , frrRange
-    , frrSheetId
-    , frrFind
-    , frrSearchByRegex
-    , frrReplacement
-
-    -- ** MoveDimensionRequest
-    , MoveDimensionRequest
-    , moveDimensionRequest
-    , mdrDestinationIndex
-    , mdrSource
-
-    -- ** BatchGetValuesByDataFilterRequest
-    , BatchGetValuesByDataFilterRequest
-    , batchGetValuesByDataFilterRequest
-    , bgvbdfrValueRenderOption
-    , bgvbdfrDataFilters
-    , bgvbdfrDateTimeRenderOption
-    , bgvbdfrMajorDimension
-
-    -- ** CellFormatVerticalAlignment
-    , CellFormatVerticalAlignment (..)
-
-    -- ** NumberFormatType
-    , NumberFormatType (..)
-
-    -- ** GradientRule
-    , GradientRule
-    , gradientRule
-    , grMidpoint
-    , grMaxpoint
-    , grMinpoint
-
-    -- ** CutPasteRequest
-    , CutPasteRequest
-    , cutPasteRequest
-    , cDestination
-    , cSource
-    , cPasteType
-
-    -- ** UpdateEmbeddedObjectPositionResponse
-    , UpdateEmbeddedObjectPositionResponse
-    , updateEmbeddedObjectPositionResponse
-    , ueoprPosition
-
-    -- ** 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
-    , filterCriteria
-    , fcHiddenValues
-    , fcCondition
-
-    -- ** ErrorValue
-    , ErrorValue
-    , errorValue
-    , evType
-    , evMessage
-
-    -- ** UpdateConditionalFormatRuleRequest
-    , UpdateConditionalFormatRuleRequest
-    , updateConditionalFormatRuleRequest
-    , ucfrrRule
-    , ucfrrNewIndex
-    , ucfrrSheetId
-    , ucfrrIndex
-
-    -- ** DeleteConditionalFormatRuleRequest
-    , DeleteConditionalFormatRuleRequest
-    , deleteConditionalFormatRuleRequest
-    , 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
-    , opHeightPixels
-    , opOffSetYPixels
-    , opAnchorCell
-    , opWidthPixels
-    , opOffSetXPixels
-
-    -- ** DeleteEmbeddedObjectRequest
-    , DeleteEmbeddedObjectRequest
-    , deleteEmbeddedObjectRequest
-    , deorObjectId
-
-    -- ** DeveloperMetadataLocation
-    , DeveloperMetadataLocation
-    , developerMetadataLocation
-    , dmlSpreadsheet
-    , dmlDimensionRange
-    , dmlSheetId
-    , dmlLocationType
-
-    -- ** SheetProperties
-    , SheetProperties
-    , sheetProperties
-    , sTabColor
-    , sGridProperties
-    , sSheetType
-    , sHidden
-    , sSheetId
-    , sTitle
-    , sRightToLeft
-    , sIndex
-
-    -- ** FilterViewCriteria
-    , FilterViewCriteria
-    , filterViewCriteria
-    , fvcAddtional
-
-    -- ** BatchUpdateValuesResponse
-    , BatchUpdateValuesResponse
-    , batchUpdateValuesResponse
-    , buvrTotalUpdatedColumns
-    , buvrResponses
-    , buvrSpreadsheetId
-    , buvrTotalUpdatedSheets
-    , buvrTotalUpdatedCells
-    , buvrTotalUpdatedRows
-
-    -- ** UpdateSheetPropertiesRequest
-    , UpdateSheetPropertiesRequest
-    , updateSheetPropertiesRequest
-    , usprFields
-    , usprProperties
-
-    -- ** Spreadsheet
-    , Spreadsheet
-    , spreadsheet
-    , sprSheets
-    , sprNamedRanges
-    , sprSpreadsheetId
-    , sprSpreadsheetURL
-    , sprDeveloperMetadata
-    , sprProperties
-
-    -- ** CandlestickChartSpec
-    , CandlestickChartSpec
-    , candlestickChartSpec
-    , ccsData
-    , ccsDomain
-
-    -- ** InsertDimensionRequest
-    , InsertDimensionRequest
-    , insertDimensionRequest
-    , idrRange
-    , idrInheritFromBefore
-
-    -- ** SearchDeveloperMetadataResponse
-    , SearchDeveloperMetadataResponse
-    , searchDeveloperMetadataResponse
-    , sdmrMatchedDeveloperMetadata
-
-    -- ** PivotValueSummarizeFunction
-    , PivotValueSummarizeFunction (..)
-
-    -- ** InterpolationPoint
-    , InterpolationPoint
-    , interpolationPoint
-    , ipColor
-    , ipValue
-    , ipType
-
-    -- ** OrgChartSpecNodeSize
-    , OrgChartSpecNodeSize (..)
-
-    -- ** CellData
-    , CellData
-    , cellData
-    , cdTextFormatRuns
-    , cdNote
-    , cdUserEnteredValue
-    , cdUserEnteredFormat
-    , cdEffectiveFormat
-    , cdPivotTable
-    , cdFormattedValue
-    , cdDataValidation
-    , cdHyperlink
-    , cdEffectiveValue
-
-    -- ** BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
-    , BatchUpdateValuesByDataFilterRequestResponseValueRenderOption (..)
-
-    -- ** ChartSourceRange
-    , ChartSourceRange
-    , chartSourceRange
-    , csrSources
-
-    -- ** AddNamedRangeResponse
-    , AddNamedRangeResponse
-    , addNamedRangeResponse
-    , anrrNamedRange
-
-    -- ** WaterfallChartDomain
-    , WaterfallChartDomain
-    , waterfallChartDomain
-    , wcdReversed
-    , wcdData
-
-    -- ** AddChartResponse
-    , AddChartResponse
-    , addChartResponse
-    , acrChart
-
-    -- ** UpdateChartSpecRequest
-    , UpdateChartSpecRequest
-    , updateChartSpecRequest
-    , ucsrSpec
-    , ucsrChartId
-
-    -- ** SetBasicFilterRequest
-    , SetBasicFilterRequest
-    , 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
-    , bfcAddtional
-
-    -- ** AddBandingRequest
-    , AddBandingRequest
-    , addBandingRequest
-    , abrBandedRange
-
-    -- ** UpdateDimensionPropertiesRequest
-    , UpdateDimensionPropertiesRequest
-    , updateDimensionPropertiesRequest
-    , udprRange
-    , udprFields
-    , udprProperties
-
-    -- ** PivotTableCriteria
-    , PivotTableCriteria
-    , pivotTableCriteria
-    , ptcAddtional
-
-    -- ** AutoFillRequest
-    , AutoFillRequest
-    , autoFillRequest
-    , afrSourceAndDestination
-    , afrUseAlternateSeries
-    , afrRange
-
-    -- ** DeveloperMetadataLookup
-    , DeveloperMetadataLookup
-    , developerMetadataLookup
-    , dLocationMatchingStrategy
-    , dMetadataId
-    , dVisibility
-    , dMetadataKey
-    , dLocationType
-    , dMetadataLocation
-    , dMetadataValue
-
-    -- ** HistogramChartSpecLegendPosition
-    , HistogramChartSpecLegendPosition (..)
-
-    -- ** DuplicateSheetRequest
-    , DuplicateSheetRequest
-    , duplicateSheetRequest
-    , dsrNewSheetName
-    , dsrInsertSheetIndex
-    , dsrSourceSheetId
-    , dsrNewSheetId
-
-    -- ** TextRotation
-    , TextRotation
-    , textRotation
-    , trAngle
-    , trVertical
-
-    -- ** DuplicateFilterViewResponse
-    , DuplicateFilterViewResponse
-    , duplicateFilterViewResponse
-    , dfvrFilter
-
-    -- ** SheetPropertiesSheetType
-    , SheetPropertiesSheetType (..)
-
-    -- ** BatchUpdateValuesRequest
-    , BatchUpdateValuesRequest
-    , batchUpdateValuesRequest
-    , buvrData
-    , buvrValueInputOption
-    , buvrIncludeValuesInResponse
-    , buvrResponseDateTimeRenderOption
-    , buvrResponseValueRenderOption
-
-    -- ** DataFilterValueRange
-    , DataFilterValueRange
-    , dataFilterValueRange
-    , dfvrValues
-    , dfvrDataFilter
-    , dfvrMajorDimension
-
-    -- ** AddChartRequest
-    , AddChartRequest
-    , addChartRequest
-    , aChart
-
-    -- ** NamedRange
-    , NamedRange
-    , namedRange
-    , nrNamedRangeId
-    , nrName
-    , nrRange
-
-    -- ** DeveloperMetadataLookupLocationType
-    , DeveloperMetadataLookupLocationType (..)
-
-    -- ** MergeCellsRequest
-    , MergeCellsRequest
-    , mergeCellsRequest
-    , mcrMergeType
-    , mcrRange
-
-    -- ** ManualRule
-    , ManualRule
-    , manualRule
-    , mrGroups
-
-    -- ** MergeCellsRequestMergeType
-    , MergeCellsRequestMergeType (..)
-
-    -- ** TextPosition
-    , TextPosition
-    , textPosition
-    , tpHorizontalAlignment
-
-    -- ** CellFormatHorizontalAlignment
-    , CellFormatHorizontalAlignment (..)
-
-    -- ** BOrder
-    , BOrder
-    , bOrder
-    , boStyle
-    , boColor
-    , boWidth
-
-    -- ** SearchDeveloperMetadataRequest
-    , SearchDeveloperMetadataRequest
-    , searchDeveloperMetadataRequest
-    , sdmrDataFilters
-
-    -- ** CandlestickSeries
-    , CandlestickSeries
-    , candlestickSeries
-    , csData
-
-    -- ** ExtendedValue
-    , ExtendedValue
-    , extendedValue
-    , evBoolValue
-    , evNumberValue
-    , evErrorValue
-    , evStringValue
-    , evFormulaValue
-
-    -- ** AddNamedRangeRequest
-    , AddNamedRangeRequest
-    , addNamedRangeRequest
-    , aNamedRange
-
-    -- ** WaterfallChartSpecStackedType
-    , WaterfallChartSpecStackedType (..)
-
-    -- ** PivotFilterCriteria
-    , PivotFilterCriteria
-    , pivotFilterCriteria
-    , pfcVisibleValues
-
-    -- ** DimensionRange
-    , DimensionRange
-    , dimensionRange
-    , drDimension
-    , drEndIndex
-    , drSheetId
-    , drStartIndex
-
-    -- ** UpdateSpreadsheetPropertiesRequest
-    , UpdateSpreadsheetPropertiesRequest
-    , updateSpreadsheetPropertiesRequest
-    , uFields
-    , uProperties
-
-    -- ** DateTimeRuleType
-    , DateTimeRuleType (..)
-
-    -- ** DeveloperMetadataLookupVisibility
-    , DeveloperMetadataLookupVisibility (..)
-
-    -- ** CandlestickDomain
-    , CandlestickDomain
-    , candlestickDomain
-    , cdReversed
-    , cdData
-
-    -- ** AddProtectedRangeResponse
-    , AddProtectedRangeResponse
-    , addProtectedRangeResponse
-    , aProtectedRange
-
-    -- ** AppendDimensionRequest
-    , AppendDimensionRequest
-    , appendDimensionRequest
-    , adrLength
-    , adrDimension
-    , adrSheetId
-
-    -- ** PivotValue
-    , PivotValue
-    , pivotValue
-    , pvSourceColumnOffSet
-    , pvFormula
-    , pvName
-    , pvCalculatedDisplayType
-    , pvSummarizeFunction
-
-    -- ** BasicChartSpecCompareMode
-    , BasicChartSpecCompareMode (..)
-
-    -- ** UnmergeCellsRequest
-    , UnmergeCellsRequest
-    , unmergeCellsRequest
-    , ucrRange
-
-    -- ** DeleteSheetRequest
-    , DeleteSheetRequest
-    , deleteSheetRequest
-    , dsrSheetId
-
-    -- ** BooleanConditionType
-    , BooleanConditionType (..)
-
-    -- ** AddDimensionGroupRequest
-    , AddDimensionGroupRequest
-    , addDimensionGroupRequest
-    , adgrRange
-
-    -- ** WaterfallChartColumnStyle
-    , WaterfallChartColumnStyle
-    , waterfallChartColumnStyle
-    , wColor
-    , wLabel
-
-    -- ** CandlestickData
-    , CandlestickData
-    , candlestickData
-    , cdLowSeries
-    , cdHighSeries
-    , cdOpenSeries
-    , cdCloseSeries
-
-    -- ** BandedRange
-    , BandedRange
-    , bandedRange
-    , brBandedRangeId
-    , brRowProperties
-    , brRange
-    , brColumnProperties
-
-    -- ** UpdateBOrdersRequest
-    , UpdateBOrdersRequest
-    , updateBOrdersRequest
-    , uborBottom
-    , uborInnerHorizontal
-    , uborLeft
-    , uborInnerVertical
-    , uborRange
-    , uborRight
-    , uborTop
-
-    -- ** ValueRangeMajorDimension
-    , ValueRangeMajorDimension (..)
-
-    -- ** BatchUpdateValuesByDataFilterRequest
-    , BatchUpdateValuesByDataFilterRequest
-    , batchUpdateValuesByDataFilterRequest
-    , buvbdfrData
-    , buvbdfrValueInputOption
-    , buvbdfrIncludeValuesInResponse
-    , buvbdfrResponseDateTimeRenderOption
-    , buvbdfrResponseValueRenderOption
-
-    -- ** PivotGroupSortOrder
-    , PivotGroupSortOrder (..)
-
-    -- ** BasicChartSpecChartType
-    , BasicChartSpecChartType (..)
-
-    -- ** EmbeddedChart
-    , EmbeddedChart
-    , embeddedChart
-    , ecSpec
-    , ecPosition
-    , ecChartId
-
-    -- ** RowData
-    , RowData
-    , rowData
-    , rdValues
-
-    -- ** Editors
-    , Editors
-    , editors
-    , eGroups
-    , eUsers
-    , eDomainUsersCanEdit
-
-    -- ** Xgafv
-    , Xgafv (..)
-
-    -- ** PivotTable
-    , PivotTable
-    , pivotTable
-    , ptValues
-    , ptValueLayout
-    , ptRows
-    , ptSource
-    , ptColumns
-    , ptCriteria
-
-    -- ** EmbeddedObjectPosition
-    , EmbeddedObjectPosition
-    , embeddedObjectPosition
-    , eopOverlayPosition
-    , eopSheetId
-    , eopNewSheet
-
-    -- ** BasicFilter
-    , BasicFilter
-    , basicFilter
-    , bfSortSpecs
-    , bfRange
-    , bfCriteria
-
-    -- ** TextToColumnsRequest
-    , TextToColumnsRequest
-    , textToColumnsRequest
-    , ttcrDelimiterType
-    , ttcrSource
-    , ttcrDelimiter
-
-    -- ** SpreadsheetPropertiesAutoRecalc
-    , SpreadsheetPropertiesAutoRecalc (..)
-
-    -- ** CopyPasteRequestPasteOrientation
-    , CopyPasteRequestPasteOrientation (..)
-
-    -- ** GetSpreadsheetByDataFilterRequest
-    , GetSpreadsheetByDataFilterRequest
-    , getSpreadsheetByDataFilterRequest
-    , gsbdfrDataFilters
-    , gsbdfrIncludeGridData
-
-    -- ** BatchUpdateSpreadsheetRequest
-    , BatchUpdateSpreadsheetRequest
-    , batchUpdateSpreadsheetRequest
-    , busrResponseIncludeGridData
-    , busrResponseRanges
-    , busrRequests
-    , busrIncludeSpreadsheetInResponse
-
-    -- ** PasteDataRequestType
-    , PasteDataRequestType (..)
-
-    -- ** UpdateValuesResponse
-    , UpdateValuesResponse
-    , updateValuesResponse
-    , uvrUpdatedCells
-    , uvrSpreadsheetId
-    , uvrUpdatedRows
-    , uvrUpdatedRange
-    , uvrUpdatedData
-    , uvrUpdatedColumns
-
-    -- ** DeleteDimensionGroupResponse
-    , DeleteDimensionGroupResponse
-    , deleteDimensionGroupResponse
-    , ddgrDimensionGroups
-
-    -- ** CopySheetToAnotherSpreadsheetRequest
-    , CopySheetToAnotherSpreadsheetRequest
-    , copySheetToAnotherSpreadsheetRequest
-    , cstasrDestinationSpreadsheetId
-
-    -- ** AddFilterViewRequest
-    , AddFilterViewRequest
-    , addFilterViewRequest
-    , aFilter
-
-    -- ** PivotGroupValueMetadata
-    , PivotGroupValueMetadata
-    , pivotGroupValueMetadata
-    , pgvmValue
-    , pgvmCollapsed
-
-    -- ** CellFormatTextDirection
-    , CellFormatTextDirection (..)
-
-    -- ** BatchClearValuesByDataFilterResponse
-    , BatchClearValuesByDataFilterResponse
-    , batchClearValuesByDataFilterResponse
-    , bcvbdfrClearedRanges
-    , bcvbdfrSpreadsheetId
-
-    -- ** WaterfallChartSeries
-    , WaterfallChartSeries
-    , waterfallChartSeries
-    , wcsData
-    , wcsCustomSubtotals
-    , wcsNegativeColumnsStyle
-    , wcsHideTrailingSubtotal
-    , wcsSubtotalColumnsStyle
-    , wcsPositiveColumnsStyle
-
-    -- ** BasicChartSeriesType
-    , BasicChartSeriesType (..)
-
-    -- ** UpdateCellsRequest
-    , UpdateCellsRequest
-    , updateCellsRequest
-    , updStart
-    , updRows
-    , updRange
-    , updFields
-
-    -- ** CellFormat
-    , CellFormat
-    , cellFormat
-    , cfBOrders
-    , cfVerticalAlignment
-    , cfBackgRoundColor
-    , cfTextRotation
-    , cfHyperlinkDisplayType
-    , cfWrapStrategy
-    , cfNumberFormat
-    , cfTextDirection
-    , cfTextFormat
-    , cfHorizontalAlignment
-    , cfPadding
-
-    -- ** DeleteProtectedRangeRequest
-    , DeleteProtectedRangeRequest
-    , deleteProtectedRangeRequest
-    , dprrProtectedRangeId
-
-    -- ** UpdateProtectedRangeRequest
-    , UpdateProtectedRangeRequest
-    , updateProtectedRangeRequest
-    , uprrProtectedRange
-    , uprrFields
-
-    -- ** AddSheetResponse
-    , AddSheetResponse
-    , addSheetResponse
-    , aProperties
-
-    -- ** ProtectedRange
-    , ProtectedRange
-    , protectedRange
-    , prProtectedRangeId
-    , prWarningOnly
-    , prNamedRangeId
-    , prRange
-    , prEditors
-    , prUnprotectedRanges
-    , prRequestingUserCanEdit
-    , prDescription
-
-    -- ** PivotValueCalculatedDisplayType
-    , PivotValueCalculatedDisplayType (..)
-
-    -- ** BasicChartAxis
-    , BasicChartAxis
-    , basicChartAxis
-    , bcaTitleTextPosition
-    , bcaFormat
-    , bcaTitle
-    , bcaPosition
-
-    -- ** GridData
-    , GridData
-    , gridData
-    , gdRowMetadata
-    , gdStartRow
-    , gdRowData
-    , gdColumnMetadata
-    , gdStartColumn
-
-    -- ** NumberFormat
-    , NumberFormat
-    , numberFormat
-    , nfPattern
-    , nfType
-
-    -- ** BatchGetValuesByDataFilterRequestDateTimeRenderOption
-    , BatchGetValuesByDataFilterRequestDateTimeRenderOption (..)
-
-    -- ** BatchUpdateSpreadsheetResponse
-    , BatchUpdateSpreadsheetResponse
-    , batchUpdateSpreadsheetResponse
-    , busrSpreadsheetId
-    , busrReplies
-    , busrUpdatedSpreadsheet
-
-    -- ** DataFilter
-    , DataFilter
-    , dataFilter
-    , dfGridRange
-    , dfA1Range
-    , dfDeveloperMetadataLookup
-
-    -- ** SetDataValidationRequest
-    , SetDataValidationRequest
-    , setDataValidationRequest
-    , sdvrRule
-    , sdvrRange
-
-    -- ** BandingProperties
-    , BandingProperties
-    , bandingProperties
-    , bpSecondBandColor
-    , bpHeaderColor
-    , bpFooterColor
-    , bpFirstBandColor
-
-    -- ** ChartSpecHiddenDimensionStrategy
-    , ChartSpecHiddenDimensionStrategy (..)
-
-    -- ** DuplicateFilterViewRequest
-    , DuplicateFilterViewRequest
-    , duplicateFilterViewRequest
-    , dFilterId
-
-    -- ** BOrderStyle
-    , BOrderStyle (..)
-
-    -- ** 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 (..)
-
-    -- ** BasicChartSpecLegendPosition
-    , BasicChartSpecLegendPosition (..)
-
-    -- ** 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
-    , cfrBooleanRule
-    , cfrGradientRule
-    , cfrRanges
-
-    -- ** BasicChartSpec
-    , BasicChartSpec
-    , basicChartSpec
-    , 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 (..)
-
-    -- ** DuplicateSheetResponse
-    , DuplicateSheetResponse
-    , duplicateSheetResponse
-    , dsrProperties
-
-    -- ** TextFormat
-    , TextFormat
-    , textFormat
-    , tfFontFamily
-    , tfForegRoundColor
-    , tfFontSize
-    , tfUnderline
-    , tfItalic
-    , 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 (..)
-
-    -- ** InsertRangeRequest
-    , InsertRangeRequest
-    , insertRangeRequest
-    , irrShiftDimension
-    , irrRange
-
-    -- ** InsertRangeRequestShiftDimension
-    , InsertRangeRequestShiftDimension (..)
-
-    -- ** Padding
-    , Padding
-    , padding
-    , pBottom
-    , pLeft
-    , pRight
-    , pTop
-
-    -- ** ChartSpec
-    , ChartSpec
-    , chartSpec
-    , csTitleTextPosition
-    , csFontName
-    , csSubtitleTextPosition
-    , csBackgRoundColor
-    , csCandlestickChart
-    , csWaterfallChart
-    , csTitleTextFormat
-    , csSubtitle
-    , csAltText
-    , csHistogramChart
-    , csBubbleChart
-    , csMaximized
-    , csSubtitleTextFormat
-    , csTitle
-    , csPieChart
-    , csOrgChart
-    , csTreemapChart
-    , csBasicChart
-    , csHiddenDimensionStrategy
-
-    -- ** DimensionProperties
-    , DimensionProperties
-    , dimensionProperties
-    , dpHiddenByFilter
-    , dpPixelSize
-    , dpHiddenByUser
-    , dpDeveloperMetadata
-
-    -- ** UpdateBandingRequest
-    , UpdateBandingRequest
-    , updateBandingRequest
-    , ubrBandedRange
-    , ubrFields
-
-    -- ** BatchGetValuesResponse
-    , BatchGetValuesResponse
-    , batchGetValuesResponse
-    , bgvrSpreadsheetId
-    , bgvrValueRanges
-
-    -- ** DeleteBandingRequest
-    , DeleteBandingRequest
-    , deleteBandingRequest
-    , dbrBandedRangeId
-
-    -- ** DeleteDeveloperMetadataResponse
-    , DeleteDeveloperMetadataResponse
-    , deleteDeveloperMetadataResponse
-    , ddmrDeletedDeveloperMetadata
-
-    -- ** UpdateDeveloperMetadataResponse
-    , UpdateDeveloperMetadataResponse
-    , updateDeveloperMetadataResponse
-    , uDeveloperMetadata
-
-    -- ** Request'
-    , Request'
-    , request'
-    , 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
-
-    -- ** LineStyle
-    , LineStyle
-    , lineStyle
-    , lsWidth
-    , lsType
-
-    -- ** DeleteConditionalFormatRuleResponse
-    , DeleteConditionalFormatRuleResponse
-    , deleteConditionalFormatRuleResponse
-    , dcfrrRule
-
-    -- ** UpdateConditionalFormatRuleResponse
-    , UpdateConditionalFormatRuleResponse
-    , updateConditionalFormatRuleResponse
-    , uNewRule
-    , uNewIndex
-    , uOldIndex
-    , uOldRule
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate
-import           Network.Google.Resource.Sheets.Spreadsheets.Create
-import           Network.Google.Resource.Sheets.Spreadsheets.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
-import           Network.Google.Sheets.Types
-
-{- $resources
-TODO
--}
-
--- | Represents the entirety of the methods and resources available for the Google Sheets API service.
-type SheetsAPI =
-     SpreadsheetsSheetsCopyToResource :<|>
-       SpreadsheetsValuesBatchClearResource
-       :<|> SpreadsheetsValuesBatchClearByDataFilterResource
-       :<|> SpreadsheetsValuesGetResource
-       :<|> SpreadsheetsValuesBatchGetByDataFilterResource
-       :<|> SpreadsheetsValuesClearResource
-       :<|> SpreadsheetsValuesBatchGetResource
-       :<|> SpreadsheetsValuesBatchUpdateResource
-       :<|> SpreadsheetsValuesAppendResource
-       :<|>
-       SpreadsheetsValuesBatchUpdateByDataFilterResource
-       :<|> SpreadsheetsValuesUpdateResource
-       :<|> SpreadsheetsDeveloperMetadataGetResource
-       :<|> SpreadsheetsDeveloperMetadataSearchResource
-       :<|> SpreadsheetsGetByDataFilterResource
-       :<|> SpreadsheetsGetResource
-       :<|> SpreadsheetsCreateResource
-       :<|> SpreadsheetsBatchUpdateResource
diff --git a/gen/Network/Google/Sheets/Types.hs b/gen/Network/Google/Sheets/Types.hs
deleted file mode 100644
--- a/gen/Network/Google/Sheets/Types.hs
+++ /dev/null
@@ -1,1659 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.Sheets.Types
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.Sheets.Types
-    (
-    -- * Service Configuration
-      sheetsService
-
-    -- * OAuth Scopes
-    , spreadsheetsReadOnlyScope
-    , driveReadOnlyScope
-    , driveScope
-    , driveFileScope
-    , spreadsheetsScope
-
-    -- * BasicChartSpecStackedType
-    , BasicChartSpecStackedType (..)
-
-    -- * PivotGroupSortValueBucket
-    , PivotGroupSortValueBucket
-    , pivotGroupSortValueBucket
-    , pgsvbBuckets
-    , pgsvbValuesIndex
-
-    -- * ValueRange
-    , ValueRange
-    , valueRange
-    , vrValues
-    , vrRange
-    , vrMajorDimension
-
-    -- * SortRangeRequest
-    , SortRangeRequest
-    , sortRangeRequest
-    , srrSortSpecs
-    , srrRange
-
-    -- * CopyPasteRequestPasteType
-    , CopyPasteRequestPasteType (..)
-
-    -- * DeveloperMetadataLookupLocationMatchingStrategy
-    , DeveloperMetadataLookupLocationMatchingStrategy (..)
-
-    -- * BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption
-    , BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption (..)
-
-    -- * DeleteNamedRangeRequest
-    , DeleteNamedRangeRequest
-    , deleteNamedRangeRequest
-    , dnrrNamedRangeId
-
-    -- * UpdateNamedRangeRequest
-    , UpdateNamedRangeRequest
-    , updateNamedRangeRequest
-    , unrrNamedRange
-    , unrrFields
-
-    -- * BasicChartAxisPosition
-    , BasicChartAxisPosition (..)
-
-    -- * ChartData
-    , ChartData
-    , chartData
-    , cdSourceRange
-
-    -- * BatchClearValuesRequest
-    , BatchClearValuesRequest
-    , 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
-
-    -- * BOrders
-    , BOrders
-    , bOrders
-    , boBottom
-    , boLeft
-    , 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
-    , asrProperties
-
-    -- * SortSpec
-    , SortSpec
-    , sortSpec
-    , ssSortOrder
-    , ssDimensionIndex
-
-    -- * DimensionGroup
-    , DimensionGroup
-    , dimensionGroup
-    , dgCollapsed
-    , dgRange
-    , dgDepth
-
-    -- * BatchUpdateValuesRequestResponseDateTimeRenderOption
-    , BatchUpdateValuesRequestResponseDateTimeRenderOption (..)
-
-    -- * CopyPasteRequest
-    , CopyPasteRequest
-    , copyPasteRequest
-    , cprDestination
-    , cprSource
-    , cprPasteOrientation
-    , cprPasteType
-
-    -- * GridRange
-    , GridRange
-    , gridRange
-    , grEndColumnIndex
-    , grStartColumnIndex
-    , grEndRowIndex
-    , grStartRowIndex
-    , grSheetId
-
-    -- * AppendDimensionRequestDimension
-    , AppendDimensionRequestDimension (..)
-
-    -- * AddFilterViewResponse
-    , AddFilterViewResponse
-    , addFilterViewResponse
-    , afvrFilter
-
-    -- * DimensionRangeDimension
-    , DimensionRangeDimension (..)
-
-    -- * BooleanCondition
-    , BooleanCondition
-    , booleanCondition
-    , bcValues
-    , bcType
-
-    -- * AutoResizeDimensionsRequest
-    , AutoResizeDimensionsRequest
-    , autoResizeDimensionsRequest
-    , ardrDimensions
-
-    -- * BubbleChartSpec
-    , BubbleChartSpec
-    , bubbleChartSpec
-    , bcsBubbleTextStyle
-    , bcsBubbleBOrderColor
-    , bcsLegendPosition
-    , bcsDomain
-    , bcsSeries
-    , bcsBubbleLabels
-    , bcsGroupIds
-    , bcsBubbleMinRadiusSize
-    , bcsBubbleMaxRadiusSize
-    , bcsBubbleOpacity
-    , bcsBubbleSizes
-
-    -- * DeleteRangeRequest
-    , DeleteRangeRequest
-    , deleteRangeRequest
-    , drrShiftDimension
-    , drrRange
-
-    -- * Sheet
-    , Sheet
-    , sheet
-    , sColumnGroups
-    , sData
-    , sMerges
-    , sRowGroups
-    , sProtectedRanges
-    , sBandedRanges
-    , sCharts
-    , sBasicFilter
-    , sDeveloperMetadata
-    , sConditionalFormats
-    , sFilterViews
-    , sProperties
-
-    -- * GridCoordinate
-    , GridCoordinate
-    , gridCoordinate
-    , gcColumnIndex
-    , gcRowIndex
-    , gcSheetId
-
-    -- * ClearValuesResponse
-    , ClearValuesResponse
-    , clearValuesResponse
-    , cvrClearedRange
-    , cvrSpreadsheetId
-
-    -- * ClearBasicFilterRequest
-    , ClearBasicFilterRequest
-    , clearBasicFilterRequest
-    , cbfrSheetId
-
-    -- * BatchGetValuesByDataFilterRequestValueRenderOption
-    , BatchGetValuesByDataFilterRequestValueRenderOption (..)
-
-    -- * UpdateEmbeddedObjectPositionRequest
-    , UpdateEmbeddedObjectPositionRequest
-    , updateEmbeddedObjectPositionRequest
-    , ueoprNewPosition
-    , ueoprObjectId
-    , ueoprFields
-
-    -- * SourceAndDestinationDimension
-    , SourceAndDestinationDimension (..)
-
-    -- * BooleanRule
-    , BooleanRule
-    , booleanRule
-    , brFormat
-    , brCondition
-
-    -- * CellFormatWrapStrategy
-    , CellFormatWrapStrategy (..)
-
-    -- * BatchGetValuesByDataFilterResponse
-    , BatchGetValuesByDataFilterResponse
-    , batchGetValuesByDataFilterResponse
-    , bgvbdfrSpreadsheetId
-    , bgvbdfrValueRanges
-
-    -- * SourceAndDestination
-    , SourceAndDestination
-    , sourceAndDestination
-    , sadDimension
-    , sadSource
-    , sadFillLength
-
-    -- * PasteDataRequest
-    , PasteDataRequest
-    , pasteDataRequest
-    , pdrData
-    , pdrCoordinate
-    , pdrHTML
-    , pdrType
-    , pdrDelimiter
-
-    -- * BatchUpdateValuesRequestValueInputOption
-    , BatchUpdateValuesRequestValueInputOption (..)
-
-    -- * AppendCellsRequest
-    , AppendCellsRequest
-    , appendCellsRequest
-    , acrRows
-    , acrSheetId
-    , acrFields
-
-    -- * FindReplaceResponse
-    , FindReplaceResponse
-    , findReplaceResponse
-    , frrValuesChanged
-    , frrFormulasChanged
-    , frrRowsChanged
-    , frrSheetsChanged
-    , frrOccurrencesChanged
-
-    -- * AddDimensionGroupResponse
-    , AddDimensionGroupResponse
-    , addDimensionGroupResponse
-    , adgrDimensionGroups
-
-    -- * PieChartSpec
-    , PieChartSpec
-    , pieChartSpec
-    , pcsPieHole
-    , pcsLegendPosition
-    , pcsDomain
-    , pcsSeries
-    , pcsThreeDimensional
-
-    -- * BatchUpdateValuesByDataFilterResponse
-    , BatchUpdateValuesByDataFilterResponse
-    , batchUpdateValuesByDataFilterResponse
-    , buvbdfrTotalUpdatedColumns
-    , buvbdfrResponses
-    , buvbdfrSpreadsheetId
-    , buvbdfrTotalUpdatedSheets
-    , buvbdfrTotalUpdatedCells
-    , buvbdfrTotalUpdatedRows
-
-    -- * TextPositionHorizontalAlignment
-    , TextPositionHorizontalAlignment (..)
-
-    -- * AppendValuesResponse
-    , AppendValuesResponse
-    , appendValuesResponse
-    , avrSpreadsheetId
-    , avrUpdates
-    , avrTableRange
-
-    -- * DeveloperMetadataVisibility
-    , DeveloperMetadataVisibility (..)
-
-    -- * BatchUpdateValuesRequestResponseValueRenderOption
-    , BatchUpdateValuesRequestResponseValueRenderOption (..)
-
-    -- * DataValidationRule
-    , DataValidationRule
-    , dataValidationRule
-    , dvrShowCustomUi
-    , dvrInputMessage
-    , dvrStrict
-    , dvrCondition
-
-    -- * FilterView
-    , FilterView
-    , filterView
-    , fvSortSpecs
-    , fvNamedRangeId
-    , fvRange
-    , fvFilterViewId
-    , fvTitle
-    , fvCriteria
-
-    -- * Color
-    , Color
-    , color
-    , cRed
-    , cAlpha
-    , cGreen
-    , cBlue
-
-    -- * DeleteFilterViewRequest
-    , DeleteFilterViewRequest
-    , deleteFilterViewRequest
-    , dfvrFilterId
-
-    -- * UpdateFilterViewRequest
-    , UpdateFilterViewRequest
-    , updateFilterViewRequest
-    , ufvrFilter
-    , ufvrFields
-
-    -- * BasicChartSeries
-    , BasicChartSeries
-    , basicChartSeries
-    , bTargetAxis
-    , bColor
-    , bSeries
-    , bType
-    , bLineStyle
-
-    -- * PivotGroupRule
-    , PivotGroupRule
-    , pivotGroupRule
-    , pgrDateTimeRule
-    , pgrManualRule
-    , pgrHistogramRule
-
-    -- * AddProtectedRangeRequest
-    , AddProtectedRangeRequest
-    , addProtectedRangeRequest
-    , aprrProtectedRange
-
-    -- * PieChartSpecLegendPosition
-    , PieChartSpecLegendPosition (..)
-
-    -- * RepeatCellRequest
-    , RepeatCellRequest
-    , repeatCellRequest
-    , rcrCell
-    , rcrRange
-    , rcrFields
-
-    -- * ConditionValue
-    , ConditionValue
-    , conditionValue
-    , cvRelativeDate
-    , cvUserEnteredValue
-
-    -- * DeleteDimensionRequest
-    , DeleteDimensionRequest
-    , deleteDimensionRequest
-    , ddrRange
-
-    -- * ClearValuesRequest
-    , ClearValuesRequest
-    , clearValuesRequest
-
-    -- * FindReplaceRequest
-    , FindReplaceRequest
-    , findReplaceRequest
-    , frrMatchCase
-    , frrAllSheets
-    , frrIncludeFormulas
-    , frrMatchEntireCell
-    , frrRange
-    , frrSheetId
-    , frrFind
-    , frrSearchByRegex
-    , frrReplacement
-
-    -- * MoveDimensionRequest
-    , MoveDimensionRequest
-    , moveDimensionRequest
-    , mdrDestinationIndex
-    , mdrSource
-
-    -- * BatchGetValuesByDataFilterRequest
-    , BatchGetValuesByDataFilterRequest
-    , batchGetValuesByDataFilterRequest
-    , bgvbdfrValueRenderOption
-    , bgvbdfrDataFilters
-    , bgvbdfrDateTimeRenderOption
-    , bgvbdfrMajorDimension
-
-    -- * CellFormatVerticalAlignment
-    , CellFormatVerticalAlignment (..)
-
-    -- * NumberFormatType
-    , NumberFormatType (..)
-
-    -- * GradientRule
-    , GradientRule
-    , gradientRule
-    , grMidpoint
-    , grMaxpoint
-    , grMinpoint
-
-    -- * CutPasteRequest
-    , CutPasteRequest
-    , cutPasteRequest
-    , cDestination
-    , cSource
-    , cPasteType
-
-    -- * UpdateEmbeddedObjectPositionResponse
-    , UpdateEmbeddedObjectPositionResponse
-    , updateEmbeddedObjectPositionResponse
-    , ueoprPosition
-
-    -- * 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
-    , filterCriteria
-    , fcHiddenValues
-    , fcCondition
-
-    -- * ErrorValue
-    , ErrorValue
-    , errorValue
-    , evType
-    , evMessage
-
-    -- * UpdateConditionalFormatRuleRequest
-    , UpdateConditionalFormatRuleRequest
-    , updateConditionalFormatRuleRequest
-    , ucfrrRule
-    , ucfrrNewIndex
-    , ucfrrSheetId
-    , ucfrrIndex
-
-    -- * DeleteConditionalFormatRuleRequest
-    , DeleteConditionalFormatRuleRequest
-    , deleteConditionalFormatRuleRequest
-    , 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
-    , opHeightPixels
-    , opOffSetYPixels
-    , opAnchorCell
-    , opWidthPixels
-    , opOffSetXPixels
-
-    -- * DeleteEmbeddedObjectRequest
-    , DeleteEmbeddedObjectRequest
-    , deleteEmbeddedObjectRequest
-    , deorObjectId
-
-    -- * DeveloperMetadataLocation
-    , DeveloperMetadataLocation
-    , developerMetadataLocation
-    , dmlSpreadsheet
-    , dmlDimensionRange
-    , dmlSheetId
-    , dmlLocationType
-
-    -- * SheetProperties
-    , SheetProperties
-    , sheetProperties
-    , sTabColor
-    , sGridProperties
-    , sSheetType
-    , sHidden
-    , sSheetId
-    , sTitle
-    , sRightToLeft
-    , sIndex
-
-    -- * FilterViewCriteria
-    , FilterViewCriteria
-    , filterViewCriteria
-    , fvcAddtional
-
-    -- * BatchUpdateValuesResponse
-    , BatchUpdateValuesResponse
-    , batchUpdateValuesResponse
-    , buvrTotalUpdatedColumns
-    , buvrResponses
-    , buvrSpreadsheetId
-    , buvrTotalUpdatedSheets
-    , buvrTotalUpdatedCells
-    , buvrTotalUpdatedRows
-
-    -- * UpdateSheetPropertiesRequest
-    , UpdateSheetPropertiesRequest
-    , updateSheetPropertiesRequest
-    , usprFields
-    , usprProperties
-
-    -- * Spreadsheet
-    , Spreadsheet
-    , spreadsheet
-    , sprSheets
-    , sprNamedRanges
-    , sprSpreadsheetId
-    , sprSpreadsheetURL
-    , sprDeveloperMetadata
-    , sprProperties
-
-    -- * CandlestickChartSpec
-    , CandlestickChartSpec
-    , candlestickChartSpec
-    , ccsData
-    , ccsDomain
-
-    -- * InsertDimensionRequest
-    , InsertDimensionRequest
-    , insertDimensionRequest
-    , idrRange
-    , idrInheritFromBefore
-
-    -- * SearchDeveloperMetadataResponse
-    , SearchDeveloperMetadataResponse
-    , searchDeveloperMetadataResponse
-    , sdmrMatchedDeveloperMetadata
-
-    -- * PivotValueSummarizeFunction
-    , PivotValueSummarizeFunction (..)
-
-    -- * InterpolationPoint
-    , InterpolationPoint
-    , interpolationPoint
-    , ipColor
-    , ipValue
-    , ipType
-
-    -- * OrgChartSpecNodeSize
-    , OrgChartSpecNodeSize (..)
-
-    -- * CellData
-    , CellData
-    , cellData
-    , cdTextFormatRuns
-    , cdNote
-    , cdUserEnteredValue
-    , cdUserEnteredFormat
-    , cdEffectiveFormat
-    , cdPivotTable
-    , cdFormattedValue
-    , cdDataValidation
-    , cdHyperlink
-    , cdEffectiveValue
-
-    -- * BatchUpdateValuesByDataFilterRequestResponseValueRenderOption
-    , BatchUpdateValuesByDataFilterRequestResponseValueRenderOption (..)
-
-    -- * ChartSourceRange
-    , ChartSourceRange
-    , chartSourceRange
-    , csrSources
-
-    -- * AddNamedRangeResponse
-    , AddNamedRangeResponse
-    , addNamedRangeResponse
-    , anrrNamedRange
-
-    -- * WaterfallChartDomain
-    , WaterfallChartDomain
-    , waterfallChartDomain
-    , wcdReversed
-    , wcdData
-
-    -- * AddChartResponse
-    , AddChartResponse
-    , addChartResponse
-    , acrChart
-
-    -- * UpdateChartSpecRequest
-    , UpdateChartSpecRequest
-    , updateChartSpecRequest
-    , ucsrSpec
-    , ucsrChartId
-
-    -- * SetBasicFilterRequest
-    , SetBasicFilterRequest
-    , 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
-    , bfcAddtional
-
-    -- * AddBandingRequest
-    , AddBandingRequest
-    , addBandingRequest
-    , abrBandedRange
-
-    -- * UpdateDimensionPropertiesRequest
-    , UpdateDimensionPropertiesRequest
-    , updateDimensionPropertiesRequest
-    , udprRange
-    , udprFields
-    , udprProperties
-
-    -- * PivotTableCriteria
-    , PivotTableCriteria
-    , pivotTableCriteria
-    , ptcAddtional
-
-    -- * AutoFillRequest
-    , AutoFillRequest
-    , autoFillRequest
-    , afrSourceAndDestination
-    , afrUseAlternateSeries
-    , afrRange
-
-    -- * DeveloperMetadataLookup
-    , DeveloperMetadataLookup
-    , developerMetadataLookup
-    , dLocationMatchingStrategy
-    , dMetadataId
-    , dVisibility
-    , dMetadataKey
-    , dLocationType
-    , dMetadataLocation
-    , dMetadataValue
-
-    -- * HistogramChartSpecLegendPosition
-    , HistogramChartSpecLegendPosition (..)
-
-    -- * DuplicateSheetRequest
-    , DuplicateSheetRequest
-    , duplicateSheetRequest
-    , dsrNewSheetName
-    , dsrInsertSheetIndex
-    , dsrSourceSheetId
-    , dsrNewSheetId
-
-    -- * TextRotation
-    , TextRotation
-    , textRotation
-    , trAngle
-    , trVertical
-
-    -- * DuplicateFilterViewResponse
-    , DuplicateFilterViewResponse
-    , duplicateFilterViewResponse
-    , dfvrFilter
-
-    -- * SheetPropertiesSheetType
-    , SheetPropertiesSheetType (..)
-
-    -- * BatchUpdateValuesRequest
-    , BatchUpdateValuesRequest
-    , batchUpdateValuesRequest
-    , buvrData
-    , buvrValueInputOption
-    , buvrIncludeValuesInResponse
-    , buvrResponseDateTimeRenderOption
-    , buvrResponseValueRenderOption
-
-    -- * DataFilterValueRange
-    , DataFilterValueRange
-    , dataFilterValueRange
-    , dfvrValues
-    , dfvrDataFilter
-    , dfvrMajorDimension
-
-    -- * AddChartRequest
-    , AddChartRequest
-    , addChartRequest
-    , aChart
-
-    -- * NamedRange
-    , NamedRange
-    , namedRange
-    , nrNamedRangeId
-    , nrName
-    , nrRange
-
-    -- * DeveloperMetadataLookupLocationType
-    , DeveloperMetadataLookupLocationType (..)
-
-    -- * MergeCellsRequest
-    , MergeCellsRequest
-    , mergeCellsRequest
-    , mcrMergeType
-    , mcrRange
-
-    -- * ManualRule
-    , ManualRule
-    , manualRule
-    , mrGroups
-
-    -- * MergeCellsRequestMergeType
-    , MergeCellsRequestMergeType (..)
-
-    -- * TextPosition
-    , TextPosition
-    , textPosition
-    , tpHorizontalAlignment
-
-    -- * CellFormatHorizontalAlignment
-    , CellFormatHorizontalAlignment (..)
-
-    -- * BOrder
-    , BOrder
-    , bOrder
-    , boStyle
-    , boColor
-    , boWidth
-
-    -- * SearchDeveloperMetadataRequest
-    , SearchDeveloperMetadataRequest
-    , searchDeveloperMetadataRequest
-    , sdmrDataFilters
-
-    -- * CandlestickSeries
-    , CandlestickSeries
-    , candlestickSeries
-    , csData
-
-    -- * ExtendedValue
-    , ExtendedValue
-    , extendedValue
-    , evBoolValue
-    , evNumberValue
-    , evErrorValue
-    , evStringValue
-    , evFormulaValue
-
-    -- * AddNamedRangeRequest
-    , AddNamedRangeRequest
-    , addNamedRangeRequest
-    , aNamedRange
-
-    -- * WaterfallChartSpecStackedType
-    , WaterfallChartSpecStackedType (..)
-
-    -- * PivotFilterCriteria
-    , PivotFilterCriteria
-    , pivotFilterCriteria
-    , pfcVisibleValues
-
-    -- * DimensionRange
-    , DimensionRange
-    , dimensionRange
-    , drDimension
-    , drEndIndex
-    , drSheetId
-    , drStartIndex
-
-    -- * UpdateSpreadsheetPropertiesRequest
-    , UpdateSpreadsheetPropertiesRequest
-    , updateSpreadsheetPropertiesRequest
-    , uFields
-    , uProperties
-
-    -- * DateTimeRuleType
-    , DateTimeRuleType (..)
-
-    -- * DeveloperMetadataLookupVisibility
-    , DeveloperMetadataLookupVisibility (..)
-
-    -- * CandlestickDomain
-    , CandlestickDomain
-    , candlestickDomain
-    , cdReversed
-    , cdData
-
-    -- * AddProtectedRangeResponse
-    , AddProtectedRangeResponse
-    , addProtectedRangeResponse
-    , aProtectedRange
-
-    -- * AppendDimensionRequest
-    , AppendDimensionRequest
-    , appendDimensionRequest
-    , adrLength
-    , adrDimension
-    , adrSheetId
-
-    -- * PivotValue
-    , PivotValue
-    , pivotValue
-    , pvSourceColumnOffSet
-    , pvFormula
-    , pvName
-    , pvCalculatedDisplayType
-    , pvSummarizeFunction
-
-    -- * BasicChartSpecCompareMode
-    , BasicChartSpecCompareMode (..)
-
-    -- * UnmergeCellsRequest
-    , UnmergeCellsRequest
-    , unmergeCellsRequest
-    , ucrRange
-
-    -- * DeleteSheetRequest
-    , DeleteSheetRequest
-    , deleteSheetRequest
-    , dsrSheetId
-
-    -- * BooleanConditionType
-    , BooleanConditionType (..)
-
-    -- * AddDimensionGroupRequest
-    , AddDimensionGroupRequest
-    , addDimensionGroupRequest
-    , adgrRange
-
-    -- * WaterfallChartColumnStyle
-    , WaterfallChartColumnStyle
-    , waterfallChartColumnStyle
-    , wColor
-    , wLabel
-
-    -- * CandlestickData
-    , CandlestickData
-    , candlestickData
-    , cdLowSeries
-    , cdHighSeries
-    , cdOpenSeries
-    , cdCloseSeries
-
-    -- * BandedRange
-    , BandedRange
-    , bandedRange
-    , brBandedRangeId
-    , brRowProperties
-    , brRange
-    , brColumnProperties
-
-    -- * UpdateBOrdersRequest
-    , UpdateBOrdersRequest
-    , updateBOrdersRequest
-    , uborBottom
-    , uborInnerHorizontal
-    , uborLeft
-    , uborInnerVertical
-    , uborRange
-    , uborRight
-    , uborTop
-
-    -- * ValueRangeMajorDimension
-    , ValueRangeMajorDimension (..)
-
-    -- * BatchUpdateValuesByDataFilterRequest
-    , BatchUpdateValuesByDataFilterRequest
-    , batchUpdateValuesByDataFilterRequest
-    , buvbdfrData
-    , buvbdfrValueInputOption
-    , buvbdfrIncludeValuesInResponse
-    , buvbdfrResponseDateTimeRenderOption
-    , buvbdfrResponseValueRenderOption
-
-    -- * PivotGroupSortOrder
-    , PivotGroupSortOrder (..)
-
-    -- * BasicChartSpecChartType
-    , BasicChartSpecChartType (..)
-
-    -- * EmbeddedChart
-    , EmbeddedChart
-    , embeddedChart
-    , ecSpec
-    , ecPosition
-    , ecChartId
-
-    -- * RowData
-    , RowData
-    , rowData
-    , rdValues
-
-    -- * Editors
-    , Editors
-    , editors
-    , eGroups
-    , eUsers
-    , eDomainUsersCanEdit
-
-    -- * Xgafv
-    , Xgafv (..)
-
-    -- * PivotTable
-    , PivotTable
-    , pivotTable
-    , ptValues
-    , ptValueLayout
-    , ptRows
-    , ptSource
-    , ptColumns
-    , ptCriteria
-
-    -- * EmbeddedObjectPosition
-    , EmbeddedObjectPosition
-    , embeddedObjectPosition
-    , eopOverlayPosition
-    , eopSheetId
-    , eopNewSheet
-
-    -- * BasicFilter
-    , BasicFilter
-    , basicFilter
-    , bfSortSpecs
-    , bfRange
-    , bfCriteria
-
-    -- * TextToColumnsRequest
-    , TextToColumnsRequest
-    , textToColumnsRequest
-    , ttcrDelimiterType
-    , ttcrSource
-    , ttcrDelimiter
-
-    -- * SpreadsheetPropertiesAutoRecalc
-    , SpreadsheetPropertiesAutoRecalc (..)
-
-    -- * CopyPasteRequestPasteOrientation
-    , CopyPasteRequestPasteOrientation (..)
-
-    -- * GetSpreadsheetByDataFilterRequest
-    , GetSpreadsheetByDataFilterRequest
-    , getSpreadsheetByDataFilterRequest
-    , gsbdfrDataFilters
-    , gsbdfrIncludeGridData
-
-    -- * BatchUpdateSpreadsheetRequest
-    , BatchUpdateSpreadsheetRequest
-    , batchUpdateSpreadsheetRequest
-    , busrResponseIncludeGridData
-    , busrResponseRanges
-    , busrRequests
-    , busrIncludeSpreadsheetInResponse
-
-    -- * PasteDataRequestType
-    , PasteDataRequestType (..)
-
-    -- * UpdateValuesResponse
-    , UpdateValuesResponse
-    , updateValuesResponse
-    , uvrUpdatedCells
-    , uvrSpreadsheetId
-    , uvrUpdatedRows
-    , uvrUpdatedRange
-    , uvrUpdatedData
-    , uvrUpdatedColumns
-
-    -- * DeleteDimensionGroupResponse
-    , DeleteDimensionGroupResponse
-    , deleteDimensionGroupResponse
-    , ddgrDimensionGroups
-
-    -- * CopySheetToAnotherSpreadsheetRequest
-    , CopySheetToAnotherSpreadsheetRequest
-    , copySheetToAnotherSpreadsheetRequest
-    , cstasrDestinationSpreadsheetId
-
-    -- * AddFilterViewRequest
-    , AddFilterViewRequest
-    , addFilterViewRequest
-    , aFilter
-
-    -- * PivotGroupValueMetadata
-    , PivotGroupValueMetadata
-    , pivotGroupValueMetadata
-    , pgvmValue
-    , pgvmCollapsed
-
-    -- * CellFormatTextDirection
-    , CellFormatTextDirection (..)
-
-    -- * BatchClearValuesByDataFilterResponse
-    , BatchClearValuesByDataFilterResponse
-    , batchClearValuesByDataFilterResponse
-    , bcvbdfrClearedRanges
-    , bcvbdfrSpreadsheetId
-
-    -- * WaterfallChartSeries
-    , WaterfallChartSeries
-    , waterfallChartSeries
-    , wcsData
-    , wcsCustomSubtotals
-    , wcsNegativeColumnsStyle
-    , wcsHideTrailingSubtotal
-    , wcsSubtotalColumnsStyle
-    , wcsPositiveColumnsStyle
-
-    -- * BasicChartSeriesType
-    , BasicChartSeriesType (..)
-
-    -- * UpdateCellsRequest
-    , UpdateCellsRequest
-    , updateCellsRequest
-    , updStart
-    , updRows
-    , updRange
-    , updFields
-
-    -- * CellFormat
-    , CellFormat
-    , cellFormat
-    , cfBOrders
-    , cfVerticalAlignment
-    , cfBackgRoundColor
-    , cfTextRotation
-    , cfHyperlinkDisplayType
-    , cfWrapStrategy
-    , cfNumberFormat
-    , cfTextDirection
-    , cfTextFormat
-    , cfHorizontalAlignment
-    , cfPadding
-
-    -- * DeleteProtectedRangeRequest
-    , DeleteProtectedRangeRequest
-    , deleteProtectedRangeRequest
-    , dprrProtectedRangeId
-
-    -- * UpdateProtectedRangeRequest
-    , UpdateProtectedRangeRequest
-    , updateProtectedRangeRequest
-    , uprrProtectedRange
-    , uprrFields
-
-    -- * AddSheetResponse
-    , AddSheetResponse
-    , addSheetResponse
-    , aProperties
-
-    -- * ProtectedRange
-    , ProtectedRange
-    , protectedRange
-    , prProtectedRangeId
-    , prWarningOnly
-    , prNamedRangeId
-    , prRange
-    , prEditors
-    , prUnprotectedRanges
-    , prRequestingUserCanEdit
-    , prDescription
-
-    -- * PivotValueCalculatedDisplayType
-    , PivotValueCalculatedDisplayType (..)
-
-    -- * BasicChartAxis
-    , BasicChartAxis
-    , basicChartAxis
-    , bcaTitleTextPosition
-    , bcaFormat
-    , bcaTitle
-    , bcaPosition
-
-    -- * GridData
-    , GridData
-    , gridData
-    , gdRowMetadata
-    , gdStartRow
-    , gdRowData
-    , gdColumnMetadata
-    , gdStartColumn
-
-    -- * NumberFormat
-    , NumberFormat
-    , numberFormat
-    , nfPattern
-    , nfType
-
-    -- * BatchGetValuesByDataFilterRequestDateTimeRenderOption
-    , BatchGetValuesByDataFilterRequestDateTimeRenderOption (..)
-
-    -- * BatchUpdateSpreadsheetResponse
-    , BatchUpdateSpreadsheetResponse
-    , batchUpdateSpreadsheetResponse
-    , busrSpreadsheetId
-    , busrReplies
-    , busrUpdatedSpreadsheet
-
-    -- * DataFilter
-    , DataFilter
-    , dataFilter
-    , dfGridRange
-    , dfA1Range
-    , dfDeveloperMetadataLookup
-
-    -- * SetDataValidationRequest
-    , SetDataValidationRequest
-    , setDataValidationRequest
-    , sdvrRule
-    , sdvrRange
-
-    -- * BandingProperties
-    , BandingProperties
-    , bandingProperties
-    , bpSecondBandColor
-    , bpHeaderColor
-    , bpFooterColor
-    , bpFirstBandColor
-
-    -- * ChartSpecHiddenDimensionStrategy
-    , ChartSpecHiddenDimensionStrategy (..)
-
-    -- * DuplicateFilterViewRequest
-    , DuplicateFilterViewRequest
-    , duplicateFilterViewRequest
-    , dFilterId
-
-    -- * BOrderStyle
-    , BOrderStyle (..)
-
-    -- * 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 (..)
-
-    -- * BasicChartSpecLegendPosition
-    , BasicChartSpecLegendPosition (..)
-
-    -- * 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
-    , cfrBooleanRule
-    , cfrGradientRule
-    , cfrRanges
-
-    -- * BasicChartSpec
-    , BasicChartSpec
-    , basicChartSpec
-    , 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 (..)
-
-    -- * DuplicateSheetResponse
-    , DuplicateSheetResponse
-    , duplicateSheetResponse
-    , dsrProperties
-
-    -- * TextFormat
-    , TextFormat
-    , textFormat
-    , tfFontFamily
-    , tfForegRoundColor
-    , tfFontSize
-    , tfUnderline
-    , tfItalic
-    , 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 (..)
-
-    -- * InsertRangeRequest
-    , InsertRangeRequest
-    , insertRangeRequest
-    , irrShiftDimension
-    , irrRange
-
-    -- * InsertRangeRequestShiftDimension
-    , InsertRangeRequestShiftDimension (..)
-
-    -- * Padding
-    , Padding
-    , padding
-    , pBottom
-    , pLeft
-    , pRight
-    , pTop
-
-    -- * ChartSpec
-    , ChartSpec
-    , chartSpec
-    , csTitleTextPosition
-    , csFontName
-    , csSubtitleTextPosition
-    , csBackgRoundColor
-    , csCandlestickChart
-    , csWaterfallChart
-    , csTitleTextFormat
-    , csSubtitle
-    , csAltText
-    , csHistogramChart
-    , csBubbleChart
-    , csMaximized
-    , csSubtitleTextFormat
-    , csTitle
-    , csPieChart
-    , csOrgChart
-    , csTreemapChart
-    , csBasicChart
-    , csHiddenDimensionStrategy
-
-    -- * DimensionProperties
-    , DimensionProperties
-    , dimensionProperties
-    , dpHiddenByFilter
-    , dpPixelSize
-    , dpHiddenByUser
-    , dpDeveloperMetadata
-
-    -- * UpdateBandingRequest
-    , UpdateBandingRequest
-    , updateBandingRequest
-    , ubrBandedRange
-    , ubrFields
-
-    -- * BatchGetValuesResponse
-    , BatchGetValuesResponse
-    , batchGetValuesResponse
-    , bgvrSpreadsheetId
-    , bgvrValueRanges
-
-    -- * DeleteBandingRequest
-    , DeleteBandingRequest
-    , deleteBandingRequest
-    , dbrBandedRangeId
-
-    -- * DeleteDeveloperMetadataResponse
-    , DeleteDeveloperMetadataResponse
-    , deleteDeveloperMetadataResponse
-    , ddmrDeletedDeveloperMetadata
-
-    -- * UpdateDeveloperMetadataResponse
-    , UpdateDeveloperMetadataResponse
-    , updateDeveloperMetadataResponse
-    , uDeveloperMetadata
-
-    -- * Request'
-    , Request'
-    , request'
-    , 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
-
-    -- * LineStyle
-    , LineStyle
-    , lineStyle
-    , lsWidth
-    , lsType
-
-    -- * DeleteConditionalFormatRuleResponse
-    , DeleteConditionalFormatRuleResponse
-    , deleteConditionalFormatRuleResponse
-    , dcfrrRule
-
-    -- * UpdateConditionalFormatRuleResponse
-    , UpdateConditionalFormatRuleResponse
-    , updateConditionalFormatRuleResponse
-    , uNewRule
-    , uNewIndex
-    , uOldIndex
-    , uOldRule
-    ) where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types.Product
-import           Network.Google.Sheets.Types.Sum
-
--- | Default request referring to version 'v4' of the Google Sheets API. This contains the host and root path used as a starting point for constructing service requests.
-sheetsService :: ServiceConfig
-sheetsService
-  = defaultService (ServiceId "sheets:v4")
-      "sheets.googleapis.com"
-
--- | View your Google Spreadsheets
-spreadsheetsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets.readonly"]
-spreadsheetsReadOnlyScope = Proxy
-
--- | See and download all your Google Drive files
-driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"]
-driveReadOnlyScope = Proxy
-
--- | See, edit, create, and delete all of your Google Drive files
-driveScope :: Proxy '["https://www.googleapis.com/auth/drive"]
-driveScope = Proxy
-
--- | View and manage Google Drive files and folders that you have opened or
--- created with this app
-driveFileScope :: Proxy '["https://www.googleapis.com/auth/drive.file"]
-driveFileScope = Proxy
-
--- | See, edit, create, and delete your spreadsheets in Google Drive
-spreadsheetsScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets"]
-spreadsheetsScope = Proxy
diff --git a/gen/Network/Google/Sheets/Types/Product.hs b/gen/Network/Google/Sheets/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/Google/Sheets/Types/Product.hs
+++ /dev/null
@@ -1,13766 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.Sheets.Types.Product
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.Sheets.Types.Product where
-
-import           Network.Google.Prelude
-import           Network.Google.Sheets.Types.Sum
-
--- | Information about which values in a pivot group should be used for
--- sorting.
---
--- /See:/ 'pivotGroupSortValueBucket' smart constructor.
-data PivotGroupSortValueBucket =
-  PivotGroupSortValueBucket'
-    { _pgsvbBuckets     :: !(Maybe [ExtendedValue])
-    , _pgsvbValuesIndex :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PivotGroupSortValueBucket' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pgsvbBuckets'
---
--- * 'pgsvbValuesIndex'
-pivotGroupSortValueBucket
-    :: PivotGroupSortValueBucket
-pivotGroupSortValueBucket =
-  PivotGroupSortValueBucket'
-    {_pgsvbBuckets = Nothing, _pgsvbValuesIndex = Nothing}
-
-
--- | Determines the bucket from which values are chosen to sort. For example,
--- in a pivot table with one row group & two column groups, the row group
--- can list up to two values. The first value corresponds to a value within
--- the first column group, and the second value corresponds to a value in
--- the second column group. If no values are listed, this would indicate
--- that the row should be sorted according to the \"Grand Total\" over the
--- column groups. If a single value is listed, this would correspond to
--- using the \"Total\" of that bucket.
-pgsvbBuckets :: Lens' PivotGroupSortValueBucket [ExtendedValue]
-pgsvbBuckets
-  = lens _pgsvbBuckets (\ s a -> s{_pgsvbBuckets = a})
-      . _Default
-      . _Coerce
-
--- | The offset in the PivotTable.values list which the values in this
--- grouping should be sorted by.
-pgsvbValuesIndex :: Lens' PivotGroupSortValueBucket (Maybe Int32)
-pgsvbValuesIndex
-  = lens _pgsvbValuesIndex
-      (\ s a -> s{_pgsvbValuesIndex = a})
-      . mapping _Coerce
-
-instance FromJSON PivotGroupSortValueBucket where
-        parseJSON
-          = withObject "PivotGroupSortValueBucket"
-              (\ o ->
-                 PivotGroupSortValueBucket' <$>
-                   (o .:? "buckets" .!= mempty) <*>
-                     (o .:? "valuesIndex"))
-
-instance ToJSON PivotGroupSortValueBucket where
-        toJSON PivotGroupSortValueBucket'{..}
-          = object
-              (catMaybes
-                 [("buckets" .=) <$> _pgsvbBuckets,
-                  ("valuesIndex" .=) <$> _pgsvbValuesIndex])
-
--- | Data within a range of the spreadsheet.
---
--- /See:/ 'valueRange' smart constructor.
-data ValueRange =
-  ValueRange'
-    { _vrValues         :: !(Maybe [[JSONValue]])
-    , _vrRange          :: !(Maybe Text)
-    , _vrMajorDimension :: !(Maybe ValueRangeMajorDimension)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ValueRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vrValues'
---
--- * 'vrRange'
---
--- * 'vrMajorDimension'
-valueRange
-    :: ValueRange
-valueRange =
-  ValueRange'
-    {_vrValues = Nothing, _vrRange = Nothing, _vrMajorDimension = Nothing}
-
-
--- | The data that was read or to be written. This is an array of arrays, the
--- outer array representing all the data and each inner array representing
--- a major dimension. Each item in the inner array corresponds with one
--- cell. For output, empty trailing rows and columns will not be included.
--- For input, supported value types are: bool, string, and double. Null
--- values will be skipped. To set a cell to an empty value, set the string
--- value to an empty string.
-vrValues :: Lens' ValueRange [[JSONValue]]
-vrValues
-  = lens _vrValues (\ s a -> s{_vrValues = a}) .
-      _Default
-      . _Coerce
-
--- | The range the values cover, in A1 notation. For output, this range
--- indicates the entire requested range, even though the values will
--- exclude trailing rows and columns. When appending values, this field
--- represents the range to search for a table, after which values will be
--- appended.
-vrRange :: Lens' ValueRange (Maybe Text)
-vrRange = lens _vrRange (\ s a -> s{_vrRange = a})
-
--- | The major dimension of the values. For output, if the spreadsheet data
--- is: \`A1=1,B1=2,A2=3,B2=4\`, then requesting
--- \`range=A1:B2,majorDimension=ROWS\` will return \`[[1,2],[3,4]]\`,
--- whereas requesting \`range=A1:B2,majorDimension=COLUMNS\` will return
--- \`[[1,3],[2,4]]\`. For input, with \`range=A1:B2,majorDimension=ROWS\`
--- then \`[[1,2],[3,4]]\` will set \`A1=1,B1=2,A2=3,B2=4\`. With
--- \`range=A1:B2,majorDimension=COLUMNS\` then \`[[1,2],[3,4]]\` will set
--- \`A1=1,B1=3,A2=2,B2=4\`. When writing, if this field is not set, it
--- defaults to ROWS.
-vrMajorDimension :: Lens' ValueRange (Maybe ValueRangeMajorDimension)
-vrMajorDimension
-  = lens _vrMajorDimension
-      (\ s a -> s{_vrMajorDimension = a})
-
-instance FromJSON ValueRange where
-        parseJSON
-          = withObject "ValueRange"
-              (\ o ->
-                 ValueRange' <$>
-                   (o .:? "values" .!= mempty) <*> (o .:? "range") <*>
-                     (o .:? "majorDimension"))
-
-instance ToJSON ValueRange where
-        toJSON ValueRange'{..}
-          = object
-              (catMaybes
-                 [("values" .=) <$> _vrValues,
-                  ("range" .=) <$> _vrRange,
-                  ("majorDimension" .=) <$> _vrMajorDimension])
-
--- | Sorts data in rows based on a sort order per column.
---
--- /See:/ 'sortRangeRequest' smart constructor.
-data SortRangeRequest =
-  SortRangeRequest'
-    { _srrSortSpecs :: !(Maybe [SortSpec])
-    , _srrRange     :: !(Maybe GridRange)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SortRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srrSortSpecs'
---
--- * 'srrRange'
-sortRangeRequest
-    :: SortRangeRequest
-sortRangeRequest =
-  SortRangeRequest' {_srrSortSpecs = Nothing, _srrRange = Nothing}
-
-
--- | The sort order per column. Later specifications are used when values are
--- equal in the earlier specifications.
-srrSortSpecs :: Lens' SortRangeRequest [SortSpec]
-srrSortSpecs
-  = lens _srrSortSpecs (\ s a -> s{_srrSortSpecs = a})
-      . _Default
-      . _Coerce
-
--- | The range to sort.
-srrRange :: Lens' SortRangeRequest (Maybe GridRange)
-srrRange = lens _srrRange (\ s a -> s{_srrRange = a})
-
-instance FromJSON SortRangeRequest where
-        parseJSON
-          = withObject "SortRangeRequest"
-              (\ o ->
-                 SortRangeRequest' <$>
-                   (o .:? "sortSpecs" .!= mempty) <*> (o .:? "range"))
-
-instance ToJSON SortRangeRequest where
-        toJSON SortRangeRequest'{..}
-          = object
-              (catMaybes
-                 [("sortSpecs" .=) <$> _srrSortSpecs,
-                  ("range" .=) <$> _srrRange])
-
--- | Removes the named range with the given ID from the spreadsheet.
---
--- /See:/ 'deleteNamedRangeRequest' smart constructor.
-newtype DeleteNamedRangeRequest =
-  DeleteNamedRangeRequest'
-    { _dnrrNamedRangeId :: Maybe Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteNamedRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dnrrNamedRangeId'
-deleteNamedRangeRequest
-    :: DeleteNamedRangeRequest
-deleteNamedRangeRequest = DeleteNamedRangeRequest' {_dnrrNamedRangeId = Nothing}
-
-
--- | The ID of the named range to delete.
-dnrrNamedRangeId :: Lens' DeleteNamedRangeRequest (Maybe Text)
-dnrrNamedRangeId
-  = lens _dnrrNamedRangeId
-      (\ s a -> s{_dnrrNamedRangeId = a})
-
-instance FromJSON DeleteNamedRangeRequest where
-        parseJSON
-          = withObject "DeleteNamedRangeRequest"
-              (\ o ->
-                 DeleteNamedRangeRequest' <$> (o .:? "namedRangeId"))
-
-instance ToJSON DeleteNamedRangeRequest where
-        toJSON DeleteNamedRangeRequest'{..}
-          = object
-              (catMaybes
-                 [("namedRangeId" .=) <$> _dnrrNamedRangeId])
-
--- | Updates properties of the named range with the specified namedRangeId.
---
--- /See:/ 'updateNamedRangeRequest' smart constructor.
-data UpdateNamedRangeRequest =
-  UpdateNamedRangeRequest'
-    { _unrrNamedRange :: !(Maybe NamedRange)
-    , _unrrFields     :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateNamedRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'unrrNamedRange'
---
--- * 'unrrFields'
-updateNamedRangeRequest
-    :: UpdateNamedRangeRequest
-updateNamedRangeRequest =
-  UpdateNamedRangeRequest' {_unrrNamedRange = Nothing, _unrrFields = Nothing}
-
-
--- | The named range to update with the new properties.
-unrrNamedRange :: Lens' UpdateNamedRangeRequest (Maybe NamedRange)
-unrrNamedRange
-  = lens _unrrNamedRange
-      (\ s a -> s{_unrrNamedRange = a})
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \`namedRange\` is implied and should not be specified. A single
--- \`\"*\"\` can be used as short-hand for listing every field.
-unrrFields :: Lens' UpdateNamedRangeRequest (Maybe GFieldMask)
-unrrFields
-  = lens _unrrFields (\ s a -> s{_unrrFields = a})
-
-instance FromJSON UpdateNamedRangeRequest where
-        parseJSON
-          = withObject "UpdateNamedRangeRequest"
-              (\ o ->
-                 UpdateNamedRangeRequest' <$>
-                   (o .:? "namedRange") <*> (o .:? "fields"))
-
-instance ToJSON UpdateNamedRangeRequest where
-        toJSON UpdateNamedRangeRequest'{..}
-          = object
-              (catMaybes
-                 [("namedRange" .=) <$> _unrrNamedRange,
-                  ("fields" .=) <$> _unrrFields])
-
--- | The data included in a domain or series.
---
--- /See:/ 'chartData' smart constructor.
-newtype ChartData =
-  ChartData'
-    { _cdSourceRange :: Maybe ChartSourceRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ChartData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdSourceRange'
-chartData
-    :: ChartData
-chartData = ChartData' {_cdSourceRange = Nothing}
-
-
--- | The source ranges of the data.
-cdSourceRange :: Lens' ChartData (Maybe ChartSourceRange)
-cdSourceRange
-  = lens _cdSourceRange
-      (\ s a -> s{_cdSourceRange = a})
-
-instance FromJSON ChartData where
-        parseJSON
-          = withObject "ChartData"
-              (\ o -> ChartData' <$> (o .:? "sourceRange"))
-
-instance ToJSON ChartData where
-        toJSON ChartData'{..}
-          = object
-              (catMaybes [("sourceRange" .=) <$> _cdSourceRange])
-
--- | The request for clearing more than one range of values in a spreadsheet.
---
--- /See:/ 'batchClearValuesRequest' smart constructor.
-newtype BatchClearValuesRequest =
-  BatchClearValuesRequest'
-    { _bcvrRanges :: Maybe [Text]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchClearValuesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bcvrRanges'
-batchClearValuesRequest
-    :: BatchClearValuesRequest
-batchClearValuesRequest = BatchClearValuesRequest' {_bcvrRanges = Nothing}
-
-
--- | The ranges to clear, in A1 notation.
-bcvrRanges :: Lens' BatchClearValuesRequest [Text]
-bcvrRanges
-  = lens _bcvrRanges (\ s a -> s{_bcvrRanges = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON BatchClearValuesRequest where
-        parseJSON
-          = withObject "BatchClearValuesRequest"
-              (\ o ->
-                 BatchClearValuesRequest' <$>
-                   (o .:? "ranges" .!= mempty))
-
-instance ToJSON BatchClearValuesRequest where
-        toJSON BatchClearValuesRequest'{..}
-          = object (catMaybes [("ranges" .=) <$> _bcvrRanges])
-
--- | The response from creating developer metadata.
---
--- /See:/ 'createDeveloperMetadataResponse' smart constructor.
-newtype CreateDeveloperMetadataResponse =
-  CreateDeveloperMetadataResponse'
-    { _cdmrDeveloperMetadata :: Maybe DeveloperMetadata
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateDeveloperMetadataResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdmrDeveloperMetadata'
-createDeveloperMetadataResponse
-    :: CreateDeveloperMetadataResponse
-createDeveloperMetadataResponse =
-  CreateDeveloperMetadataResponse' {_cdmrDeveloperMetadata = Nothing}
-
-
--- | The developer metadata that was created.
-cdmrDeveloperMetadata :: Lens' CreateDeveloperMetadataResponse (Maybe DeveloperMetadata)
-cdmrDeveloperMetadata
-  = lens _cdmrDeveloperMetadata
-      (\ s a -> s{_cdmrDeveloperMetadata = a})
-
-instance FromJSON CreateDeveloperMetadataResponse
-         where
-        parseJSON
-          = withObject "CreateDeveloperMetadataResponse"
-              (\ o ->
-                 CreateDeveloperMetadataResponse' <$>
-                   (o .:? "developerMetadata"))
-
-instance ToJSON CreateDeveloperMetadataResponse where
-        toJSON CreateDeveloperMetadataResponse'{..}
-          = object
-              (catMaybes
-                 [("developerMetadata" .=) <$>
-                    _cdmrDeveloperMetadata])
-
--- | Allows you to organize the date-time values in a source data column into
--- buckets based on selected parts of their date or time values. For
--- example, consider a pivot table showing sales transactions by date:
--- +----------+--------------+ | Date | SUM of Sales |
--- +----------+--------------+ | 1\/1\/2017 | $621.14 | | 2\/3\/2017 |
--- $708.84 | | 5\/8\/2017 | $326.84 | ... +----------+--------------+
--- Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
--- results in the following pivot table. +--------------+--------------+ |
--- Grouped Date | SUM of Sales | +--------------+--------------+ | 2017-Jan
--- | $53,731.78 | | 2017-Feb | $83,475.32 | | 2017-Mar | $94,385.05 | ...
--- +--------------+--------------+
---
--- /See:/ 'dateTimeRule' smart constructor.
-newtype DateTimeRule =
-  DateTimeRule'
-    { _dtrType :: Maybe DateTimeRuleType
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DateTimeRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtrType'
-dateTimeRule
-    :: DateTimeRule
-dateTimeRule = DateTimeRule' {_dtrType = Nothing}
-
-
--- | The type of date-time grouping to apply.
-dtrType :: Lens' DateTimeRule (Maybe DateTimeRuleType)
-dtrType = lens _dtrType (\ s a -> s{_dtrType = a})
-
-instance FromJSON DateTimeRule where
-        parseJSON
-          = withObject "DateTimeRule"
-              (\ o -> DateTimeRule' <$> (o .:? "type"))
-
-instance ToJSON DateTimeRule where
-        toJSON DateTimeRule'{..}
-          = object (catMaybes [("type" .=) <$> _dtrType])
-
--- | Properties of a spreadsheet.
---
--- /See:/ 'spreadsheetProperties' smart constructor.
-data SpreadsheetProperties =
-  SpreadsheetProperties'
-    { _spDefaultFormat                :: !(Maybe CellFormat)
-    , _spLocale                       :: !(Maybe Text)
-    , _spIterativeCalculationSettings :: !(Maybe IterativeCalculationSettings)
-    , _spAutoRecalc                   :: !(Maybe SpreadsheetPropertiesAutoRecalc)
-    , _spTitle                        :: !(Maybe Text)
-    , _spTimeZone                     :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SpreadsheetProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spDefaultFormat'
---
--- * 'spLocale'
---
--- * 'spIterativeCalculationSettings'
---
--- * 'spAutoRecalc'
---
--- * 'spTitle'
---
--- * 'spTimeZone'
-spreadsheetProperties
-    :: SpreadsheetProperties
-spreadsheetProperties =
-  SpreadsheetProperties'
-    { _spDefaultFormat = Nothing
-    , _spLocale = Nothing
-    , _spIterativeCalculationSettings = Nothing
-    , _spAutoRecalc = Nothing
-    , _spTitle = Nothing
-    , _spTimeZone = Nothing
-    }
-
-
--- | The default format of all cells in the spreadsheet.
--- CellData.effectiveFormat will not be set if the cell\'s format is equal
--- to this default format. This field is read-only.
-spDefaultFormat :: Lens' SpreadsheetProperties (Maybe CellFormat)
-spDefaultFormat
-  = lens _spDefaultFormat
-      (\ s a -> s{_spDefaultFormat = a})
-
--- | The locale of the spreadsheet in one of the following formats: * an ISO
--- 639-1 language code such as \`en\` * an ISO 639-2 language code such as
--- \`fil\`, if no 639-1 code exists * a combination of the ISO language
--- code and country code, such as \`en_US\` Note: when updating this field,
--- not all locales\/languages are supported.
-spLocale :: Lens' SpreadsheetProperties (Maybe Text)
-spLocale = lens _spLocale (\ s a -> s{_spLocale = a})
-
--- | Determines whether and how circular references are resolved with
--- iterative calculation. Absence of this field means that circular
--- references will result in calculation errors.
-spIterativeCalculationSettings :: Lens' SpreadsheetProperties (Maybe IterativeCalculationSettings)
-spIterativeCalculationSettings
-  = lens _spIterativeCalculationSettings
-      (\ s a -> s{_spIterativeCalculationSettings = a})
-
--- | The amount of time to wait before volatile functions are recalculated.
-spAutoRecalc :: Lens' SpreadsheetProperties (Maybe SpreadsheetPropertiesAutoRecalc)
-spAutoRecalc
-  = lens _spAutoRecalc (\ s a -> s{_spAutoRecalc = a})
-
--- | The title of the spreadsheet.
-spTitle :: Lens' SpreadsheetProperties (Maybe Text)
-spTitle = lens _spTitle (\ s a -> s{_spTitle = a})
-
--- | The time zone of the spreadsheet, in CLDR format such as
--- \`America\/New_York\`. If the time zone isn\'t recognized, this may be a
--- custom time zone such as \`GMT-07:00\`.
-spTimeZone :: Lens' SpreadsheetProperties (Maybe Text)
-spTimeZone
-  = lens _spTimeZone (\ s a -> s{_spTimeZone = a})
-
-instance FromJSON SpreadsheetProperties where
-        parseJSON
-          = withObject "SpreadsheetProperties"
-              (\ o ->
-                 SpreadsheetProperties' <$>
-                   (o .:? "defaultFormat") <*> (o .:? "locale") <*>
-                     (o .:? "iterativeCalculationSettings")
-                     <*> (o .:? "autoRecalc")
-                     <*> (o .:? "title")
-                     <*> (o .:? "timeZone"))
-
-instance ToJSON SpreadsheetProperties where
-        toJSON SpreadsheetProperties'{..}
-          = object
-              (catMaybes
-                 [("defaultFormat" .=) <$> _spDefaultFormat,
-                  ("locale" .=) <$> _spLocale,
-                  ("iterativeCalculationSettings" .=) <$>
-                    _spIterativeCalculationSettings,
-                  ("autoRecalc" .=) <$> _spAutoRecalc,
-                  ("title" .=) <$> _spTitle,
-                  ("timeZone" .=) <$> _spTimeZone])
-
--- | The borders of the cell.
---
--- /See:/ 'bOrders' smart constructor.
-data BOrders =
-  BOrders'
-    { _boBottom :: !(Maybe BOrder)
-    , _boLeft   :: !(Maybe BOrder)
-    , _boRight  :: !(Maybe BOrder)
-    , _boTop    :: !(Maybe BOrder)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BOrders' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'boBottom'
---
--- * 'boLeft'
---
--- * 'boRight'
---
--- * 'boTop'
-bOrders
-    :: BOrders
-bOrders =
-  BOrders'
-    { _boBottom = Nothing
-    , _boLeft = Nothing
-    , _boRight = Nothing
-    , _boTop = Nothing
-    }
-
-
--- | The bottom border of the cell.
-boBottom :: Lens' BOrders (Maybe BOrder)
-boBottom = lens _boBottom (\ s a -> s{_boBottom = a})
-
--- | The left border of the cell.
-boLeft :: Lens' BOrders (Maybe BOrder)
-boLeft = lens _boLeft (\ s a -> s{_boLeft = a})
-
--- | The right border of the cell.
-boRight :: Lens' BOrders (Maybe BOrder)
-boRight = lens _boRight (\ s a -> s{_boRight = a})
-
--- | The top border of the cell.
-boTop :: Lens' BOrders (Maybe BOrder)
-boTop = lens _boTop (\ s a -> s{_boTop = a})
-
-instance FromJSON BOrders where
-        parseJSON
-          = withObject "BOrders"
-              (\ o ->
-                 BOrders' <$>
-                   (o .:? "bottom") <*> (o .:? "left") <*>
-                     (o .:? "right")
-                     <*> (o .:? "top"))
-
-instance ToJSON BOrders where
-        toJSON BOrders'{..}
-          = object
-              (catMaybes
-                 [("bottom" .=) <$> _boBottom,
-                  ("left" .=) <$> _boLeft, ("right" .=) <$> _boRight,
-                  ("top" .=) <$> _boTop])
-
--- | The request for clearing more than one range selected by a DataFilter in
--- a spreadsheet.
---
--- /See:/ 'batchClearValuesByDataFilterRequest' smart constructor.
-newtype BatchClearValuesByDataFilterRequest =
-  BatchClearValuesByDataFilterRequest'
-    { _bcvbdfrDataFilters :: Maybe [DataFilter]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchClearValuesByDataFilterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bcvbdfrDataFilters'
-batchClearValuesByDataFilterRequest
-    :: BatchClearValuesByDataFilterRequest
-batchClearValuesByDataFilterRequest =
-  BatchClearValuesByDataFilterRequest' {_bcvbdfrDataFilters = Nothing}
-
-
--- | The DataFilters used to determine which ranges to clear.
-bcvbdfrDataFilters :: Lens' BatchClearValuesByDataFilterRequest [DataFilter]
-bcvbdfrDataFilters
-  = lens _bcvbdfrDataFilters
-      (\ s a -> s{_bcvbdfrDataFilters = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON BatchClearValuesByDataFilterRequest
-         where
-        parseJSON
-          = withObject "BatchClearValuesByDataFilterRequest"
-              (\ o ->
-                 BatchClearValuesByDataFilterRequest' <$>
-                   (o .:? "dataFilters" .!= mempty))
-
-instance ToJSON BatchClearValuesByDataFilterRequest
-         where
-        toJSON BatchClearValuesByDataFilterRequest'{..}
-          = object
-              (catMaybes
-                 [("dataFilters" .=) <$> _bcvbdfrDataFilters])
-
--- | A run of a text format. The format of this run continues until the start
--- index of the next run. When updating, all fields must be set.
---
--- /See:/ 'textFormatRun' smart constructor.
-data TextFormatRun =
-  TextFormatRun'
-    { _tfrFormat     :: !(Maybe TextFormat)
-    , _tfrStartIndex :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TextFormatRun' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tfrFormat'
---
--- * 'tfrStartIndex'
-textFormatRun
-    :: TextFormatRun
-textFormatRun = TextFormatRun' {_tfrFormat = Nothing, _tfrStartIndex = Nothing}
-
-
--- | The format of this run. Absent values inherit the cell\'s format.
-tfrFormat :: Lens' TextFormatRun (Maybe TextFormat)
-tfrFormat
-  = lens _tfrFormat (\ s a -> s{_tfrFormat = a})
-
--- | The character index where this run starts.
-tfrStartIndex :: Lens' TextFormatRun (Maybe Int32)
-tfrStartIndex
-  = lens _tfrStartIndex
-      (\ s a -> s{_tfrStartIndex = a})
-      . mapping _Coerce
-
-instance FromJSON TextFormatRun where
-        parseJSON
-          = withObject "TextFormatRun"
-              (\ o ->
-                 TextFormatRun' <$>
-                   (o .:? "format") <*> (o .:? "startIndex"))
-
-instance ToJSON TextFormatRun where
-        toJSON TextFormatRun'{..}
-          = object
-              (catMaybes
-                 [("format" .=) <$> _tfrFormat,
-                  ("startIndex" .=) <$> _tfrStartIndex])
-
--- | Deletes a group over the specified range by decrementing the depth of
--- the dimensions in the range. For example, assume the sheet has a depth-1
--- group over B:E and a depth-2 group over C:D. Deleting a group over D:E
--- leaves the sheet with a depth-1 group over B:D and a depth-2 group over
--- C:C.
---
--- /See:/ 'deleteDimensionGroupRequest' smart constructor.
-newtype DeleteDimensionGroupRequest =
-  DeleteDimensionGroupRequest'
-    { _ddgrRange :: Maybe DimensionRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteDimensionGroupRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddgrRange'
-deleteDimensionGroupRequest
-    :: DeleteDimensionGroupRequest
-deleteDimensionGroupRequest =
-  DeleteDimensionGroupRequest' {_ddgrRange = Nothing}
-
-
--- | The range of the group to be deleted.
-ddgrRange :: Lens' DeleteDimensionGroupRequest (Maybe DimensionRange)
-ddgrRange
-  = lens _ddgrRange (\ s a -> s{_ddgrRange = a})
-
-instance FromJSON DeleteDimensionGroupRequest where
-        parseJSON
-          = withObject "DeleteDimensionGroupRequest"
-              (\ o ->
-                 DeleteDimensionGroupRequest' <$> (o .:? "range"))
-
-instance ToJSON DeleteDimensionGroupRequest where
-        toJSON DeleteDimensionGroupRequest'{..}
-          = object (catMaybes [("range" .=) <$> _ddgrRange])
-
--- | Updates the state of the specified group.
---
--- /See:/ 'updateDimensionGroupRequest' smart constructor.
-data UpdateDimensionGroupRequest =
-  UpdateDimensionGroupRequest'
-    { _udgrDimensionGroup :: !(Maybe DimensionGroup)
-    , _udgrFields         :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateDimensionGroupRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udgrDimensionGroup'
---
--- * 'udgrFields'
-updateDimensionGroupRequest
-    :: UpdateDimensionGroupRequest
-updateDimensionGroupRequest =
-  UpdateDimensionGroupRequest'
-    {_udgrDimensionGroup = Nothing, _udgrFields = Nothing}
-
-
--- | The group whose state should be updated. The range and depth of the
--- group should specify a valid group on the sheet, and all other fields
--- updated.
-udgrDimensionGroup :: Lens' UpdateDimensionGroupRequest (Maybe DimensionGroup)
-udgrDimensionGroup
-  = lens _udgrDimensionGroup
-      (\ s a -> s{_udgrDimensionGroup = a})
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \`dimensionGroup\` is implied and should not be specified. A
--- single \`\"*\"\` can be used as short-hand for listing every field.
-udgrFields :: Lens' UpdateDimensionGroupRequest (Maybe GFieldMask)
-udgrFields
-  = lens _udgrFields (\ s a -> s{_udgrFields = a})
-
-instance FromJSON UpdateDimensionGroupRequest where
-        parseJSON
-          = withObject "UpdateDimensionGroupRequest"
-              (\ o ->
-                 UpdateDimensionGroupRequest' <$>
-                   (o .:? "dimensionGroup") <*> (o .:? "fields"))
-
-instance ToJSON UpdateDimensionGroupRequest where
-        toJSON UpdateDimensionGroupRequest'{..}
-          = object
-              (catMaybes
-                 [("dimensionGroup" .=) <$> _udgrDimensionGroup,
-                  ("fields" .=) <$> _udgrFields])
-
--- | Adds a new sheet. When a sheet is added at a given index, all subsequent
--- sheets\' indexes are incremented. To add an object sheet, use
--- AddChartRequest instead and specify EmbeddedObjectPosition.sheetId or
--- EmbeddedObjectPosition.newSheet.
---
--- /See:/ 'addSheetRequest' smart constructor.
-newtype AddSheetRequest =
-  AddSheetRequest'
-    { _asrProperties :: Maybe SheetProperties
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddSheetRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asrProperties'
-addSheetRequest
-    :: AddSheetRequest
-addSheetRequest = AddSheetRequest' {_asrProperties = Nothing}
-
-
--- | The properties the new sheet should have. All properties are optional.
--- The sheetId field is optional; if one is not set, an id will be randomly
--- generated. (It is an error to specify the ID of a sheet that already
--- exists.)
-asrProperties :: Lens' AddSheetRequest (Maybe SheetProperties)
-asrProperties
-  = lens _asrProperties
-      (\ s a -> s{_asrProperties = a})
-
-instance FromJSON AddSheetRequest where
-        parseJSON
-          = withObject "AddSheetRequest"
-              (\ o -> AddSheetRequest' <$> (o .:? "properties"))
-
-instance ToJSON AddSheetRequest where
-        toJSON AddSheetRequest'{..}
-          = object
-              (catMaybes [("properties" .=) <$> _asrProperties])
-
--- | A sort order associated with a specific column or row.
---
--- /See:/ 'sortSpec' smart constructor.
-data SortSpec =
-  SortSpec'
-    { _ssSortOrder      :: !(Maybe SortSpecSortOrder)
-    , _ssDimensionIndex :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SortSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssSortOrder'
---
--- * 'ssDimensionIndex'
-sortSpec
-    :: SortSpec
-sortSpec = SortSpec' {_ssSortOrder = Nothing, _ssDimensionIndex = Nothing}
-
-
--- | The order data should be sorted.
-ssSortOrder :: Lens' SortSpec (Maybe SortSpecSortOrder)
-ssSortOrder
-  = lens _ssSortOrder (\ s a -> s{_ssSortOrder = a})
-
--- | The dimension the sort should be applied to.
-ssDimensionIndex :: Lens' SortSpec (Maybe Int32)
-ssDimensionIndex
-  = lens _ssDimensionIndex
-      (\ s a -> s{_ssDimensionIndex = a})
-      . mapping _Coerce
-
-instance FromJSON SortSpec where
-        parseJSON
-          = withObject "SortSpec"
-              (\ o ->
-                 SortSpec' <$>
-                   (o .:? "sortOrder") <*> (o .:? "dimensionIndex"))
-
-instance ToJSON SortSpec where
-        toJSON SortSpec'{..}
-          = object
-              (catMaybes
-                 [("sortOrder" .=) <$> _ssSortOrder,
-                  ("dimensionIndex" .=) <$> _ssDimensionIndex])
-
--- | A group over an interval of rows or columns on a sheet, which can
--- contain or be contained within other groups. A group can be collapsed or
--- expanded as a unit on the sheet.
---
--- /See:/ 'dimensionGroup' smart constructor.
-data DimensionGroup =
-  DimensionGroup'
-    { _dgCollapsed :: !(Maybe Bool)
-    , _dgRange     :: !(Maybe DimensionRange)
-    , _dgDepth     :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DimensionGroup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dgCollapsed'
---
--- * 'dgRange'
---
--- * 'dgDepth'
-dimensionGroup
-    :: DimensionGroup
-dimensionGroup =
-  DimensionGroup'
-    {_dgCollapsed = Nothing, _dgRange = Nothing, _dgDepth = Nothing}
-
-
--- | This field is true if this group is collapsed. A collapsed group remains
--- collapsed if an overlapping group at a shallower depth is expanded. A
--- true value does not imply that all dimensions within the group are
--- hidden, since a dimension\'s visibility can change independently from
--- this group property. However, when this property is updated, all
--- dimensions within it are set to hidden if this field is true, or set to
--- visible if this field is false.
-dgCollapsed :: Lens' DimensionGroup (Maybe Bool)
-dgCollapsed
-  = lens _dgCollapsed (\ s a -> s{_dgCollapsed = a})
-
--- | The range over which this group exists.
-dgRange :: Lens' DimensionGroup (Maybe DimensionRange)
-dgRange = lens _dgRange (\ s a -> s{_dgRange = a})
-
--- | The depth of the group, representing how many groups have a range that
--- wholly contains the range of this group.
-dgDepth :: Lens' DimensionGroup (Maybe Int32)
-dgDepth
-  = lens _dgDepth (\ s a -> s{_dgDepth = a}) .
-      mapping _Coerce
-
-instance FromJSON DimensionGroup where
-        parseJSON
-          = withObject "DimensionGroup"
-              (\ o ->
-                 DimensionGroup' <$>
-                   (o .:? "collapsed") <*> (o .:? "range") <*>
-                     (o .:? "depth"))
-
-instance ToJSON DimensionGroup where
-        toJSON DimensionGroup'{..}
-          = object
-              (catMaybes
-                 [("collapsed" .=) <$> _dgCollapsed,
-                  ("range" .=) <$> _dgRange,
-                  ("depth" .=) <$> _dgDepth])
-
--- | Copies data from the source to the destination.
---
--- /See:/ 'copyPasteRequest' smart constructor.
-data CopyPasteRequest =
-  CopyPasteRequest'
-    { _cprDestination      :: !(Maybe GridRange)
-    , _cprSource           :: !(Maybe GridRange)
-    , _cprPasteOrientation :: !(Maybe CopyPasteRequestPasteOrientation)
-    , _cprPasteType        :: !(Maybe CopyPasteRequestPasteType)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CopyPasteRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cprDestination'
---
--- * 'cprSource'
---
--- * 'cprPasteOrientation'
---
--- * 'cprPasteType'
-copyPasteRequest
-    :: CopyPasteRequest
-copyPasteRequest =
-  CopyPasteRequest'
-    { _cprDestination = Nothing
-    , _cprSource = Nothing
-    , _cprPasteOrientation = Nothing
-    , _cprPasteType = Nothing
-    }
-
-
--- | The location to paste to. If the range covers a span that\'s a multiple
--- of the source\'s height or width, then the data will be repeated to fill
--- in the destination range. If the range is smaller than the source range,
--- the entire source data will still be copied (beyond the end of the
--- destination range).
-cprDestination :: Lens' CopyPasteRequest (Maybe GridRange)
-cprDestination
-  = lens _cprDestination
-      (\ s a -> s{_cprDestination = a})
-
--- | The source range to copy.
-cprSource :: Lens' CopyPasteRequest (Maybe GridRange)
-cprSource
-  = lens _cprSource (\ s a -> s{_cprSource = a})
-
--- | How that data should be oriented when pasting.
-cprPasteOrientation :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteOrientation)
-cprPasteOrientation
-  = lens _cprPasteOrientation
-      (\ s a -> s{_cprPasteOrientation = a})
-
--- | What kind of data to paste.
-cprPasteType :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteType)
-cprPasteType
-  = lens _cprPasteType (\ s a -> s{_cprPasteType = a})
-
-instance FromJSON CopyPasteRequest where
-        parseJSON
-          = withObject "CopyPasteRequest"
-              (\ o ->
-                 CopyPasteRequest' <$>
-                   (o .:? "destination") <*> (o .:? "source") <*>
-                     (o .:? "pasteOrientation")
-                     <*> (o .:? "pasteType"))
-
-instance ToJSON CopyPasteRequest where
-        toJSON CopyPasteRequest'{..}
-          = object
-              (catMaybes
-                 [("destination" .=) <$> _cprDestination,
-                  ("source" .=) <$> _cprSource,
-                  ("pasteOrientation" .=) <$> _cprPasteOrientation,
-                  ("pasteType" .=) <$> _cprPasteType])
-
--- | A range on a sheet. All indexes are zero-based. Indexes are half open,
--- e.g the start index is inclusive and the end index is exclusive --
--- [start_index, end_index). Missing indexes indicate the range is
--- unbounded on that side. For example, if \`\"Sheet1\"\` is sheet ID 0,
--- then: \`Sheet1!A1:A1 == sheet_id: 0, start_row_index: 0, end_row_index:
--- 1, start_column_index: 0, end_column_index: 1\` \`Sheet1!A3:B4 ==
--- sheet_id: 0, start_row_index: 2, end_row_index: 4, start_column_index:
--- 0, end_column_index: 2\` \`Sheet1!A:B == sheet_id: 0,
--- start_column_index: 0, end_column_index: 2\` \`Sheet1!A5:B == sheet_id:
--- 0, start_row_index: 4, start_column_index: 0, end_column_index: 2\`
--- \`Sheet1 == sheet_id:0\` The start index must always be less than or
--- equal to the end index. If the start index equals the end index, then
--- the range is empty. Empty ranges are typically not meaningful and are
--- usually rendered in the UI as \`#REF!\`.
---
--- /See:/ 'gridRange' smart constructor.
-data GridRange =
-  GridRange'
-    { _grEndColumnIndex   :: !(Maybe (Textual Int32))
-    , _grStartColumnIndex :: !(Maybe (Textual Int32))
-    , _grEndRowIndex      :: !(Maybe (Textual Int32))
-    , _grStartRowIndex    :: !(Maybe (Textual Int32))
-    , _grSheetId          :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GridRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'grEndColumnIndex'
---
--- * 'grStartColumnIndex'
---
--- * 'grEndRowIndex'
---
--- * 'grStartRowIndex'
---
--- * 'grSheetId'
-gridRange
-    :: GridRange
-gridRange =
-  GridRange'
-    { _grEndColumnIndex = Nothing
-    , _grStartColumnIndex = Nothing
-    , _grEndRowIndex = Nothing
-    , _grStartRowIndex = Nothing
-    , _grSheetId = Nothing
-    }
-
-
--- | The end column (exclusive) of the range, or not set if unbounded.
-grEndColumnIndex :: Lens' GridRange (Maybe Int32)
-grEndColumnIndex
-  = lens _grEndColumnIndex
-      (\ s a -> s{_grEndColumnIndex = a})
-      . mapping _Coerce
-
--- | The start column (inclusive) of the range, or not set if unbounded.
-grStartColumnIndex :: Lens' GridRange (Maybe Int32)
-grStartColumnIndex
-  = lens _grStartColumnIndex
-      (\ s a -> s{_grStartColumnIndex = a})
-      . mapping _Coerce
-
--- | The end row (exclusive) of the range, or not set if unbounded.
-grEndRowIndex :: Lens' GridRange (Maybe Int32)
-grEndRowIndex
-  = lens _grEndRowIndex
-      (\ s a -> s{_grEndRowIndex = a})
-      . mapping _Coerce
-
--- | The start row (inclusive) of the range, or not set if unbounded.
-grStartRowIndex :: Lens' GridRange (Maybe Int32)
-grStartRowIndex
-  = lens _grStartRowIndex
-      (\ s a -> s{_grStartRowIndex = a})
-      . mapping _Coerce
-
--- | The sheet this range is on.
-grSheetId :: Lens' GridRange (Maybe Int32)
-grSheetId
-  = lens _grSheetId (\ s a -> s{_grSheetId = a}) .
-      mapping _Coerce
-
-instance FromJSON GridRange where
-        parseJSON
-          = withObject "GridRange"
-              (\ o ->
-                 GridRange' <$>
-                   (o .:? "endColumnIndex") <*>
-                     (o .:? "startColumnIndex")
-                     <*> (o .:? "endRowIndex")
-                     <*> (o .:? "startRowIndex")
-                     <*> (o .:? "sheetId"))
-
-instance ToJSON GridRange where
-        toJSON GridRange'{..}
-          = object
-              (catMaybes
-                 [("endColumnIndex" .=) <$> _grEndColumnIndex,
-                  ("startColumnIndex" .=) <$> _grStartColumnIndex,
-                  ("endRowIndex" .=) <$> _grEndRowIndex,
-                  ("startRowIndex" .=) <$> _grStartRowIndex,
-                  ("sheetId" .=) <$> _grSheetId])
-
--- | The result of adding a filter view.
---
--- /See:/ 'addFilterViewResponse' smart constructor.
-newtype AddFilterViewResponse =
-  AddFilterViewResponse'
-    { _afvrFilter :: Maybe FilterView
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddFilterViewResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'afvrFilter'
-addFilterViewResponse
-    :: AddFilterViewResponse
-addFilterViewResponse = AddFilterViewResponse' {_afvrFilter = Nothing}
-
-
--- | The newly added filter view.
-afvrFilter :: Lens' AddFilterViewResponse (Maybe FilterView)
-afvrFilter
-  = lens _afvrFilter (\ s a -> s{_afvrFilter = a})
-
-instance FromJSON AddFilterViewResponse where
-        parseJSON
-          = withObject "AddFilterViewResponse"
-              (\ o -> AddFilterViewResponse' <$> (o .:? "filter"))
-
-instance ToJSON AddFilterViewResponse where
-        toJSON AddFilterViewResponse'{..}
-          = object (catMaybes [("filter" .=) <$> _afvrFilter])
-
--- | A condition that can evaluate to true or false. BooleanConditions are
--- used by conditional formatting, data validation, and the criteria in
--- filters.
---
--- /See:/ 'booleanCondition' smart constructor.
-data BooleanCondition =
-  BooleanCondition'
-    { _bcValues :: !(Maybe [ConditionValue])
-    , _bcType   :: !(Maybe BooleanConditionType)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BooleanCondition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bcValues'
---
--- * 'bcType'
-booleanCondition
-    :: BooleanCondition
-booleanCondition = BooleanCondition' {_bcValues = Nothing, _bcType = Nothing}
-
-
--- | The values of the condition. The number of supported values depends on
--- the condition type. Some support zero values, others one or two values,
--- and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
-bcValues :: Lens' BooleanCondition [ConditionValue]
-bcValues
-  = lens _bcValues (\ s a -> s{_bcValues = a}) .
-      _Default
-      . _Coerce
-
--- | The type of condition.
-bcType :: Lens' BooleanCondition (Maybe BooleanConditionType)
-bcType = lens _bcType (\ s a -> s{_bcType = a})
-
-instance FromJSON BooleanCondition where
-        parseJSON
-          = withObject "BooleanCondition"
-              (\ o ->
-                 BooleanCondition' <$>
-                   (o .:? "values" .!= mempty) <*> (o .:? "type"))
-
-instance ToJSON BooleanCondition where
-        toJSON BooleanCondition'{..}
-          = object
-              (catMaybes
-                 [("values" .=) <$> _bcValues,
-                  ("type" .=) <$> _bcType])
-
--- | Automatically resizes one or more dimensions based on the contents of
--- the cells in that dimension.
---
--- /See:/ 'autoResizeDimensionsRequest' smart constructor.
-newtype AutoResizeDimensionsRequest =
-  AutoResizeDimensionsRequest'
-    { _ardrDimensions :: Maybe DimensionRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AutoResizeDimensionsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ardrDimensions'
-autoResizeDimensionsRequest
-    :: AutoResizeDimensionsRequest
-autoResizeDimensionsRequest =
-  AutoResizeDimensionsRequest' {_ardrDimensions = Nothing}
-
-
--- | The dimensions to automatically resize.
-ardrDimensions :: Lens' AutoResizeDimensionsRequest (Maybe DimensionRange)
-ardrDimensions
-  = lens _ardrDimensions
-      (\ s a -> s{_ardrDimensions = a})
-
-instance FromJSON AutoResizeDimensionsRequest where
-        parseJSON
-          = withObject "AutoResizeDimensionsRequest"
-              (\ o ->
-                 AutoResizeDimensionsRequest' <$>
-                   (o .:? "dimensions"))
-
-instance ToJSON AutoResizeDimensionsRequest where
-        toJSON AutoResizeDimensionsRequest'{..}
-          = object
-              (catMaybes [("dimensions" .=) <$> _ardrDimensions])
-
--- | A </chart/interactive/docs/gallery/bubblechart bubble chart>.
---
--- /See:/ 'bubbleChartSpec' smart constructor.
-data BubbleChartSpec =
-  BubbleChartSpec'
-    { _bcsBubbleTextStyle     :: !(Maybe TextFormat)
-    , _bcsBubbleBOrderColor   :: !(Maybe Color)
-    , _bcsLegendPosition      :: !(Maybe BubbleChartSpecLegendPosition)
-    , _bcsDomain              :: !(Maybe ChartData)
-    , _bcsSeries              :: !(Maybe ChartData)
-    , _bcsBubbleLabels        :: !(Maybe ChartData)
-    , _bcsGroupIds            :: !(Maybe ChartData)
-    , _bcsBubbleMinRadiusSize :: !(Maybe (Textual Int32))
-    , _bcsBubbleMaxRadiusSize :: !(Maybe (Textual Int32))
-    , _bcsBubbleOpacity       :: !(Maybe (Textual Double))
-    , _bcsBubbleSizes         :: !(Maybe ChartData)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BubbleChartSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bcsBubbleTextStyle'
---
--- * 'bcsBubbleBOrderColor'
---
--- * 'bcsLegendPosition'
---
--- * 'bcsDomain'
---
--- * 'bcsSeries'
---
--- * 'bcsBubbleLabels'
---
--- * 'bcsGroupIds'
---
--- * 'bcsBubbleMinRadiusSize'
---
--- * 'bcsBubbleMaxRadiusSize'
---
--- * 'bcsBubbleOpacity'
---
--- * 'bcsBubbleSizes'
-bubbleChartSpec
-    :: BubbleChartSpec
-bubbleChartSpec =
-  BubbleChartSpec'
-    { _bcsBubbleTextStyle = Nothing
-    , _bcsBubbleBOrderColor = Nothing
-    , _bcsLegendPosition = Nothing
-    , _bcsDomain = Nothing
-    , _bcsSeries = Nothing
-    , _bcsBubbleLabels = Nothing
-    , _bcsGroupIds = Nothing
-    , _bcsBubbleMinRadiusSize = Nothing
-    , _bcsBubbleMaxRadiusSize = Nothing
-    , _bcsBubbleOpacity = Nothing
-    , _bcsBubbleSizes = Nothing
-    }
-
-
--- | The format of the text inside the bubbles. Underline and Strikethrough
--- are not supported.
-bcsBubbleTextStyle :: Lens' BubbleChartSpec (Maybe TextFormat)
-bcsBubbleTextStyle
-  = lens _bcsBubbleTextStyle
-      (\ s a -> s{_bcsBubbleTextStyle = a})
-
--- | The bubble border color.
-bcsBubbleBOrderColor :: Lens' BubbleChartSpec (Maybe Color)
-bcsBubbleBOrderColor
-  = lens _bcsBubbleBOrderColor
-      (\ s a -> s{_bcsBubbleBOrderColor = a})
-
--- | Where the legend of the chart should be drawn.
-bcsLegendPosition :: Lens' BubbleChartSpec (Maybe BubbleChartSpecLegendPosition)
-bcsLegendPosition
-  = lens _bcsLegendPosition
-      (\ s a -> s{_bcsLegendPosition = a})
-
--- | The data containing the bubble x-values. These values locate the bubbles
--- in the chart horizontally.
-bcsDomain :: Lens' BubbleChartSpec (Maybe ChartData)
-bcsDomain
-  = lens _bcsDomain (\ s a -> s{_bcsDomain = a})
-
--- | The data contianing the bubble y-values. These values locate the bubbles
--- in the chart vertically.
-bcsSeries :: Lens' BubbleChartSpec (Maybe ChartData)
-bcsSeries
-  = lens _bcsSeries (\ s a -> s{_bcsSeries = a})
-
--- | The data containing the bubble labels. These do not need to be unique.
-bcsBubbleLabels :: Lens' BubbleChartSpec (Maybe ChartData)
-bcsBubbleLabels
-  = lens _bcsBubbleLabels
-      (\ s a -> s{_bcsBubbleLabels = a})
-
--- | The data containing the bubble group IDs. All bubbles with the same
--- group ID are drawn in the same color. If bubble_sizes is specified then
--- this field must also be specified but may contain blank values. This
--- field is optional.
-bcsGroupIds :: Lens' BubbleChartSpec (Maybe ChartData)
-bcsGroupIds
-  = lens _bcsGroupIds (\ s a -> s{_bcsGroupIds = a})
-
--- | The minimum radius size of the bubbles, in pixels. If specific, the
--- field must be a positive value.
-bcsBubbleMinRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)
-bcsBubbleMinRadiusSize
-  = lens _bcsBubbleMinRadiusSize
-      (\ s a -> s{_bcsBubbleMinRadiusSize = a})
-      . mapping _Coerce
-
--- | The max radius size of the bubbles, in pixels. If specified, the field
--- must be a positive value.
-bcsBubbleMaxRadiusSize :: Lens' BubbleChartSpec (Maybe Int32)
-bcsBubbleMaxRadiusSize
-  = lens _bcsBubbleMaxRadiusSize
-      (\ s a -> s{_bcsBubbleMaxRadiusSize = a})
-      . mapping _Coerce
-
--- | The opacity of the bubbles between 0 and 1.0. 0 is fully transparent and
--- 1 is fully opaque.
-bcsBubbleOpacity :: Lens' BubbleChartSpec (Maybe Double)
-bcsBubbleOpacity
-  = lens _bcsBubbleOpacity
-      (\ s a -> s{_bcsBubbleOpacity = a})
-      . mapping _Coerce
-
--- | The data contianing the bubble sizes. Bubble sizes are used to draw the
--- bubbles at different sizes relative to each other. If specified,
--- group_ids must also be specified. This field is optional.
-bcsBubbleSizes :: Lens' BubbleChartSpec (Maybe ChartData)
-bcsBubbleSizes
-  = lens _bcsBubbleSizes
-      (\ s a -> s{_bcsBubbleSizes = a})
-
-instance FromJSON BubbleChartSpec where
-        parseJSON
-          = withObject "BubbleChartSpec"
-              (\ o ->
-                 BubbleChartSpec' <$>
-                   (o .:? "bubbleTextStyle") <*>
-                     (o .:? "bubbleBorderColor")
-                     <*> (o .:? "legendPosition")
-                     <*> (o .:? "domain")
-                     <*> (o .:? "series")
-                     <*> (o .:? "bubbleLabels")
-                     <*> (o .:? "groupIds")
-                     <*> (o .:? "bubbleMinRadiusSize")
-                     <*> (o .:? "bubbleMaxRadiusSize")
-                     <*> (o .:? "bubbleOpacity")
-                     <*> (o .:? "bubbleSizes"))
-
-instance ToJSON BubbleChartSpec where
-        toJSON BubbleChartSpec'{..}
-          = object
-              (catMaybes
-                 [("bubbleTextStyle" .=) <$> _bcsBubbleTextStyle,
-                  ("bubbleBorderColor" .=) <$> _bcsBubbleBOrderColor,
-                  ("legendPosition" .=) <$> _bcsLegendPosition,
-                  ("domain" .=) <$> _bcsDomain,
-                  ("series" .=) <$> _bcsSeries,
-                  ("bubbleLabels" .=) <$> _bcsBubbleLabels,
-                  ("groupIds" .=) <$> _bcsGroupIds,
-                  ("bubbleMinRadiusSize" .=) <$>
-                    _bcsBubbleMinRadiusSize,
-                  ("bubbleMaxRadiusSize" .=) <$>
-                    _bcsBubbleMaxRadiusSize,
-                  ("bubbleOpacity" .=) <$> _bcsBubbleOpacity,
-                  ("bubbleSizes" .=) <$> _bcsBubbleSizes])
-
--- | Deletes a range of cells, shifting other cells into the deleted area.
---
--- /See:/ 'deleteRangeRequest' smart constructor.
-data DeleteRangeRequest =
-  DeleteRangeRequest'
-    { _drrShiftDimension :: !(Maybe DeleteRangeRequestShiftDimension)
-    , _drrRange          :: !(Maybe GridRange)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drrShiftDimension'
---
--- * 'drrRange'
-deleteRangeRequest
-    :: DeleteRangeRequest
-deleteRangeRequest =
-  DeleteRangeRequest' {_drrShiftDimension = Nothing, _drrRange = Nothing}
-
-
--- | The dimension from which deleted cells will be replaced with. If ROWS,
--- existing cells will be shifted upward to replace the deleted cells. If
--- COLUMNS, existing cells will be shifted left to replace the deleted
--- cells.
-drrShiftDimension :: Lens' DeleteRangeRequest (Maybe DeleteRangeRequestShiftDimension)
-drrShiftDimension
-  = lens _drrShiftDimension
-      (\ s a -> s{_drrShiftDimension = a})
-
--- | The range of cells to delete.
-drrRange :: Lens' DeleteRangeRequest (Maybe GridRange)
-drrRange = lens _drrRange (\ s a -> s{_drrRange = a})
-
-instance FromJSON DeleteRangeRequest where
-        parseJSON
-          = withObject "DeleteRangeRequest"
-              (\ o ->
-                 DeleteRangeRequest' <$>
-                   (o .:? "shiftDimension") <*> (o .:? "range"))
-
-instance ToJSON DeleteRangeRequest where
-        toJSON DeleteRangeRequest'{..}
-          = object
-              (catMaybes
-                 [("shiftDimension" .=) <$> _drrShiftDimension,
-                  ("range" .=) <$> _drrRange])
-
--- | A sheet in a spreadsheet.
---
--- /See:/ 'sheet' smart constructor.
-data Sheet =
-  Sheet'
-    { _sColumnGroups       :: !(Maybe [DimensionGroup])
-    , _sData               :: !(Maybe [GridData])
-    , _sMerges             :: !(Maybe [GridRange])
-    , _sRowGroups          :: !(Maybe [DimensionGroup])
-    , _sProtectedRanges    :: !(Maybe [ProtectedRange])
-    , _sBandedRanges       :: !(Maybe [BandedRange])
-    , _sCharts             :: !(Maybe [EmbeddedChart])
-    , _sBasicFilter        :: !(Maybe BasicFilter)
-    , _sDeveloperMetadata  :: !(Maybe [DeveloperMetadata])
-    , _sConditionalFormats :: !(Maybe [ConditionalFormatRule])
-    , _sFilterViews        :: !(Maybe [FilterView])
-    , _sProperties         :: !(Maybe SheetProperties)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Sheet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sColumnGroups'
---
--- * 'sData'
---
--- * 'sMerges'
---
--- * 'sRowGroups'
---
--- * 'sProtectedRanges'
---
--- * 'sBandedRanges'
---
--- * 'sCharts'
---
--- * 'sBasicFilter'
---
--- * 'sDeveloperMetadata'
---
--- * 'sConditionalFormats'
---
--- * 'sFilterViews'
---
--- * 'sProperties'
-sheet
-    :: Sheet
-sheet =
-  Sheet'
-    { _sColumnGroups = Nothing
-    , _sData = Nothing
-    , _sMerges = Nothing
-    , _sRowGroups = Nothing
-    , _sProtectedRanges = Nothing
-    , _sBandedRanges = Nothing
-    , _sCharts = Nothing
-    , _sBasicFilter = Nothing
-    , _sDeveloperMetadata = Nothing
-    , _sConditionalFormats = Nothing
-    , _sFilterViews = Nothing
-    , _sProperties = Nothing
-    }
-
-
--- | All column groups on this sheet, ordered by increasing range start
--- index, then by group depth.
-sColumnGroups :: Lens' Sheet [DimensionGroup]
-sColumnGroups
-  = lens _sColumnGroups
-      (\ s a -> s{_sColumnGroups = a})
-      . _Default
-      . _Coerce
-
--- | Data in the grid, if this is a grid sheet. The number of GridData
--- objects returned is dependent on the number of ranges requested on this
--- sheet. For example, if this is representing \`Sheet1\`, and the
--- spreadsheet was requested with ranges \`Sheet1!A1:C10\` and
--- \`Sheet1!D15:E20\`, then the first GridData will have a
--- startRow\/startColumn of \`0\`, while the second one will have
--- \`startRow 14\` (zero-based row 15), and \`startColumn 3\` (zero-based
--- column D).
-sData :: Lens' Sheet [GridData]
-sData
-  = lens _sData (\ s a -> s{_sData = a}) . _Default .
-      _Coerce
-
--- | The ranges that are merged together.
-sMerges :: Lens' Sheet [GridRange]
-sMerges
-  = lens _sMerges (\ s a -> s{_sMerges = a}) . _Default
-      . _Coerce
-
--- | All row groups on this sheet, ordered by increasing range start index,
--- then by group depth.
-sRowGroups :: Lens' Sheet [DimensionGroup]
-sRowGroups
-  = lens _sRowGroups (\ s a -> s{_sRowGroups = a}) .
-      _Default
-      . _Coerce
-
--- | The protected ranges in this sheet.
-sProtectedRanges :: Lens' Sheet [ProtectedRange]
-sProtectedRanges
-  = lens _sProtectedRanges
-      (\ s a -> s{_sProtectedRanges = a})
-      . _Default
-      . _Coerce
-
--- | The banded (alternating colors) ranges on this sheet.
-sBandedRanges :: Lens' Sheet [BandedRange]
-sBandedRanges
-  = lens _sBandedRanges
-      (\ s a -> s{_sBandedRanges = a})
-      . _Default
-      . _Coerce
-
--- | The specifications of every chart on this sheet.
-sCharts :: Lens' Sheet [EmbeddedChart]
-sCharts
-  = lens _sCharts (\ s a -> s{_sCharts = a}) . _Default
-      . _Coerce
-
--- | The filter on this sheet, if any.
-sBasicFilter :: Lens' Sheet (Maybe BasicFilter)
-sBasicFilter
-  = lens _sBasicFilter (\ s a -> s{_sBasicFilter = a})
-
--- | The developer metadata associated with a sheet.
-sDeveloperMetadata :: Lens' Sheet [DeveloperMetadata]
-sDeveloperMetadata
-  = lens _sDeveloperMetadata
-      (\ s a -> s{_sDeveloperMetadata = a})
-      . _Default
-      . _Coerce
-
--- | The conditional format rules in this sheet.
-sConditionalFormats :: Lens' Sheet [ConditionalFormatRule]
-sConditionalFormats
-  = lens _sConditionalFormats
-      (\ s a -> s{_sConditionalFormats = a})
-      . _Default
-      . _Coerce
-
--- | The filter views in this sheet.
-sFilterViews :: Lens' Sheet [FilterView]
-sFilterViews
-  = lens _sFilterViews (\ s a -> s{_sFilterViews = a})
-      . _Default
-      . _Coerce
-
--- | The properties of the sheet.
-sProperties :: Lens' Sheet (Maybe SheetProperties)
-sProperties
-  = lens _sProperties (\ s a -> s{_sProperties = a})
-
-instance FromJSON Sheet where
-        parseJSON
-          = withObject "Sheet"
-              (\ o ->
-                 Sheet' <$>
-                   (o .:? "columnGroups" .!= mempty) <*>
-                     (o .:? "data" .!= mempty)
-                     <*> (o .:? "merges" .!= mempty)
-                     <*> (o .:? "rowGroups" .!= mempty)
-                     <*> (o .:? "protectedRanges" .!= mempty)
-                     <*> (o .:? "bandedRanges" .!= mempty)
-                     <*> (o .:? "charts" .!= mempty)
-                     <*> (o .:? "basicFilter")
-                     <*> (o .:? "developerMetadata" .!= mempty)
-                     <*> (o .:? "conditionalFormats" .!= mempty)
-                     <*> (o .:? "filterViews" .!= mempty)
-                     <*> (o .:? "properties"))
-
-instance ToJSON Sheet where
-        toJSON Sheet'{..}
-          = object
-              (catMaybes
-                 [("columnGroups" .=) <$> _sColumnGroups,
-                  ("data" .=) <$> _sData, ("merges" .=) <$> _sMerges,
-                  ("rowGroups" .=) <$> _sRowGroups,
-                  ("protectedRanges" .=) <$> _sProtectedRanges,
-                  ("bandedRanges" .=) <$> _sBandedRanges,
-                  ("charts" .=) <$> _sCharts,
-                  ("basicFilter" .=) <$> _sBasicFilter,
-                  ("developerMetadata" .=) <$> _sDeveloperMetadata,
-                  ("conditionalFormats" .=) <$> _sConditionalFormats,
-                  ("filterViews" .=) <$> _sFilterViews,
-                  ("properties" .=) <$> _sProperties])
-
--- | A coordinate in a sheet. All indexes are zero-based.
---
--- /See:/ 'gridCoordinate' smart constructor.
-data GridCoordinate =
-  GridCoordinate'
-    { _gcColumnIndex :: !(Maybe (Textual Int32))
-    , _gcRowIndex    :: !(Maybe (Textual Int32))
-    , _gcSheetId     :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GridCoordinate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gcColumnIndex'
---
--- * 'gcRowIndex'
---
--- * 'gcSheetId'
-gridCoordinate
-    :: GridCoordinate
-gridCoordinate =
-  GridCoordinate'
-    {_gcColumnIndex = Nothing, _gcRowIndex = Nothing, _gcSheetId = Nothing}
-
-
--- | The column index of the coordinate.
-gcColumnIndex :: Lens' GridCoordinate (Maybe Int32)
-gcColumnIndex
-  = lens _gcColumnIndex
-      (\ s a -> s{_gcColumnIndex = a})
-      . mapping _Coerce
-
--- | The row index of the coordinate.
-gcRowIndex :: Lens' GridCoordinate (Maybe Int32)
-gcRowIndex
-  = lens _gcRowIndex (\ s a -> s{_gcRowIndex = a}) .
-      mapping _Coerce
-
--- | The sheet this coordinate is on.
-gcSheetId :: Lens' GridCoordinate (Maybe Int32)
-gcSheetId
-  = lens _gcSheetId (\ s a -> s{_gcSheetId = a}) .
-      mapping _Coerce
-
-instance FromJSON GridCoordinate where
-        parseJSON
-          = withObject "GridCoordinate"
-              (\ o ->
-                 GridCoordinate' <$>
-                   (o .:? "columnIndex") <*> (o .:? "rowIndex") <*>
-                     (o .:? "sheetId"))
-
-instance ToJSON GridCoordinate where
-        toJSON GridCoordinate'{..}
-          = object
-              (catMaybes
-                 [("columnIndex" .=) <$> _gcColumnIndex,
-                  ("rowIndex" .=) <$> _gcRowIndex,
-                  ("sheetId" .=) <$> _gcSheetId])
-
--- | The response when clearing a range of values in a spreadsheet.
---
--- /See:/ 'clearValuesResponse' smart constructor.
-data ClearValuesResponse =
-  ClearValuesResponse'
-    { _cvrClearedRange  :: !(Maybe Text)
-    , _cvrSpreadsheetId :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ClearValuesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cvrClearedRange'
---
--- * 'cvrSpreadsheetId'
-clearValuesResponse
-    :: ClearValuesResponse
-clearValuesResponse =
-  ClearValuesResponse' {_cvrClearedRange = Nothing, _cvrSpreadsheetId = Nothing}
-
-
--- | The range (in A1 notation) that was cleared. (If the request was for an
--- unbounded range or a ranger larger than the bounds of the sheet, this
--- will be the actual range that was cleared, bounded to the sheet\'s
--- limits.)
-cvrClearedRange :: Lens' ClearValuesResponse (Maybe Text)
-cvrClearedRange
-  = lens _cvrClearedRange
-      (\ s a -> s{_cvrClearedRange = a})
-
--- | The spreadsheet the updates were applied to.
-cvrSpreadsheetId :: Lens' ClearValuesResponse (Maybe Text)
-cvrSpreadsheetId
-  = lens _cvrSpreadsheetId
-      (\ s a -> s{_cvrSpreadsheetId = a})
-
-instance FromJSON ClearValuesResponse where
-        parseJSON
-          = withObject "ClearValuesResponse"
-              (\ o ->
-                 ClearValuesResponse' <$>
-                   (o .:? "clearedRange") <*> (o .:? "spreadsheetId"))
-
-instance ToJSON ClearValuesResponse where
-        toJSON ClearValuesResponse'{..}
-          = object
-              (catMaybes
-                 [("clearedRange" .=) <$> _cvrClearedRange,
-                  ("spreadsheetId" .=) <$> _cvrSpreadsheetId])
-
--- | Clears the basic filter, if any exists on the sheet.
---
--- /See:/ 'clearBasicFilterRequest' smart constructor.
-newtype ClearBasicFilterRequest =
-  ClearBasicFilterRequest'
-    { _cbfrSheetId :: Maybe (Textual Int32)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ClearBasicFilterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cbfrSheetId'
-clearBasicFilterRequest
-    :: ClearBasicFilterRequest
-clearBasicFilterRequest = ClearBasicFilterRequest' {_cbfrSheetId = Nothing}
-
-
--- | The sheet ID on which the basic filter should be cleared.
-cbfrSheetId :: Lens' ClearBasicFilterRequest (Maybe Int32)
-cbfrSheetId
-  = lens _cbfrSheetId (\ s a -> s{_cbfrSheetId = a}) .
-      mapping _Coerce
-
-instance FromJSON ClearBasicFilterRequest where
-        parseJSON
-          = withObject "ClearBasicFilterRequest"
-              (\ o ->
-                 ClearBasicFilterRequest' <$> (o .:? "sheetId"))
-
-instance ToJSON ClearBasicFilterRequest where
-        toJSON ClearBasicFilterRequest'{..}
-          = object
-              (catMaybes [("sheetId" .=) <$> _cbfrSheetId])
-
--- | Update an embedded object\'s position (such as a moving or resizing a
--- chart or image).
---
--- /See:/ 'updateEmbeddedObjectPositionRequest' smart constructor.
-data UpdateEmbeddedObjectPositionRequest =
-  UpdateEmbeddedObjectPositionRequest'
-    { _ueoprNewPosition :: !(Maybe EmbeddedObjectPosition)
-    , _ueoprObjectId    :: !(Maybe (Textual Int32))
-    , _ueoprFields      :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateEmbeddedObjectPositionRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ueoprNewPosition'
---
--- * 'ueoprObjectId'
---
--- * 'ueoprFields'
-updateEmbeddedObjectPositionRequest
-    :: UpdateEmbeddedObjectPositionRequest
-updateEmbeddedObjectPositionRequest =
-  UpdateEmbeddedObjectPositionRequest'
-    { _ueoprNewPosition = Nothing
-    , _ueoprObjectId = Nothing
-    , _ueoprFields = Nothing
-    }
-
-
--- | An explicit position to move the embedded object to. If
--- newPosition.sheetId is set, a new sheet with that ID will be created. If
--- newPosition.newSheet is set to true, a new sheet will be created with an
--- ID that will be chosen for you.
-ueoprNewPosition :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe EmbeddedObjectPosition)
-ueoprNewPosition
-  = lens _ueoprNewPosition
-      (\ s a -> s{_ueoprNewPosition = a})
-
--- | The ID of the object to moved.
-ueoprObjectId :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe Int32)
-ueoprObjectId
-  = lens _ueoprObjectId
-      (\ s a -> s{_ueoprObjectId = a})
-      . mapping _Coerce
-
--- | The fields of OverlayPosition that should be updated when setting a new
--- position. Used only if newPosition.overlayPosition is set, in which case
--- at least one field must be specified. The root
--- \`newPosition.overlayPosition\` is implied and should not be specified.
--- A single \`\"*\"\` can be used as short-hand for listing every field.
-ueoprFields :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe GFieldMask)
-ueoprFields
-  = lens _ueoprFields (\ s a -> s{_ueoprFields = a})
-
-instance FromJSON UpdateEmbeddedObjectPositionRequest
-         where
-        parseJSON
-          = withObject "UpdateEmbeddedObjectPositionRequest"
-              (\ o ->
-                 UpdateEmbeddedObjectPositionRequest' <$>
-                   (o .:? "newPosition") <*> (o .:? "objectId") <*>
-                     (o .:? "fields"))
-
-instance ToJSON UpdateEmbeddedObjectPositionRequest
-         where
-        toJSON UpdateEmbeddedObjectPositionRequest'{..}
-          = object
-              (catMaybes
-                 [("newPosition" .=) <$> _ueoprNewPosition,
-                  ("objectId" .=) <$> _ueoprObjectId,
-                  ("fields" .=) <$> _ueoprFields])
-
--- | A rule that may or may not match, depending on the condition.
---
--- /See:/ 'booleanRule' smart constructor.
-data BooleanRule =
-  BooleanRule'
-    { _brFormat    :: !(Maybe CellFormat)
-    , _brCondition :: !(Maybe BooleanCondition)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BooleanRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'brFormat'
---
--- * 'brCondition'
-booleanRule
-    :: BooleanRule
-booleanRule = BooleanRule' {_brFormat = Nothing, _brCondition = Nothing}
-
-
--- | The format to apply. Conditional formatting can only apply a subset of
--- formatting: bold, italic, strikethrough, foreground color & background
--- color.
-brFormat :: Lens' BooleanRule (Maybe CellFormat)
-brFormat = lens _brFormat (\ s a -> s{_brFormat = a})
-
--- | The condition of the rule. If the condition evaluates to true, the
--- format is applied.
-brCondition :: Lens' BooleanRule (Maybe BooleanCondition)
-brCondition
-  = lens _brCondition (\ s a -> s{_brCondition = a})
-
-instance FromJSON BooleanRule where
-        parseJSON
-          = withObject "BooleanRule"
-              (\ o ->
-                 BooleanRule' <$>
-                   (o .:? "format") <*> (o .:? "condition"))
-
-instance ToJSON BooleanRule where
-        toJSON BooleanRule'{..}
-          = object
-              (catMaybes
-                 [("format" .=) <$> _brFormat,
-                  ("condition" .=) <$> _brCondition])
-
--- | The response when retrieving more than one range of values in a
--- spreadsheet selected by DataFilters.
---
--- /See:/ 'batchGetValuesByDataFilterResponse' smart constructor.
-data BatchGetValuesByDataFilterResponse =
-  BatchGetValuesByDataFilterResponse'
-    { _bgvbdfrSpreadsheetId :: !(Maybe Text)
-    , _bgvbdfrValueRanges   :: !(Maybe [MatchedValueRange])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchGetValuesByDataFilterResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bgvbdfrSpreadsheetId'
---
--- * 'bgvbdfrValueRanges'
-batchGetValuesByDataFilterResponse
-    :: BatchGetValuesByDataFilterResponse
-batchGetValuesByDataFilterResponse =
-  BatchGetValuesByDataFilterResponse'
-    {_bgvbdfrSpreadsheetId = Nothing, _bgvbdfrValueRanges = Nothing}
-
-
--- | The ID of the spreadsheet the data was retrieved from.
-bgvbdfrSpreadsheetId :: Lens' BatchGetValuesByDataFilterResponse (Maybe Text)
-bgvbdfrSpreadsheetId
-  = lens _bgvbdfrSpreadsheetId
-      (\ s a -> s{_bgvbdfrSpreadsheetId = a})
-
--- | The requested values with the list of data filters that matched them.
-bgvbdfrValueRanges :: Lens' BatchGetValuesByDataFilterResponse [MatchedValueRange]
-bgvbdfrValueRanges
-  = lens _bgvbdfrValueRanges
-      (\ s a -> s{_bgvbdfrValueRanges = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON BatchGetValuesByDataFilterResponse
-         where
-        parseJSON
-          = withObject "BatchGetValuesByDataFilterResponse"
-              (\ o ->
-                 BatchGetValuesByDataFilterResponse' <$>
-                   (o .:? "spreadsheetId") <*>
-                     (o .:? "valueRanges" .!= mempty))
-
-instance ToJSON BatchGetValuesByDataFilterResponse
-         where
-        toJSON BatchGetValuesByDataFilterResponse'{..}
-          = object
-              (catMaybes
-                 [("spreadsheetId" .=) <$> _bgvbdfrSpreadsheetId,
-                  ("valueRanges" .=) <$> _bgvbdfrValueRanges])
-
--- | A combination of a source range and how to extend that source.
---
--- /See:/ 'sourceAndDestination' smart constructor.
-data SourceAndDestination =
-  SourceAndDestination'
-    { _sadDimension  :: !(Maybe SourceAndDestinationDimension)
-    , _sadSource     :: !(Maybe GridRange)
-    , _sadFillLength :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SourceAndDestination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sadDimension'
---
--- * 'sadSource'
---
--- * 'sadFillLength'
-sourceAndDestination
-    :: SourceAndDestination
-sourceAndDestination =
-  SourceAndDestination'
-    {_sadDimension = Nothing, _sadSource = Nothing, _sadFillLength = Nothing}
-
-
--- | The dimension that data should be filled into.
-sadDimension :: Lens' SourceAndDestination (Maybe SourceAndDestinationDimension)
-sadDimension
-  = lens _sadDimension (\ s a -> s{_sadDimension = a})
-
--- | The location of the data to use as the source of the autofill.
-sadSource :: Lens' SourceAndDestination (Maybe GridRange)
-sadSource
-  = lens _sadSource (\ s a -> s{_sadSource = a})
-
--- | The number of rows or columns that data should be filled into. Positive
--- numbers expand beyond the last row or last column of the source.
--- Negative numbers expand before the first row or first column of the
--- source.
-sadFillLength :: Lens' SourceAndDestination (Maybe Int32)
-sadFillLength
-  = lens _sadFillLength
-      (\ s a -> s{_sadFillLength = a})
-      . mapping _Coerce
-
-instance FromJSON SourceAndDestination where
-        parseJSON
-          = withObject "SourceAndDestination"
-              (\ o ->
-                 SourceAndDestination' <$>
-                   (o .:? "dimension") <*> (o .:? "source") <*>
-                     (o .:? "fillLength"))
-
-instance ToJSON SourceAndDestination where
-        toJSON SourceAndDestination'{..}
-          = object
-              (catMaybes
-                 [("dimension" .=) <$> _sadDimension,
-                  ("source" .=) <$> _sadSource,
-                  ("fillLength" .=) <$> _sadFillLength])
-
--- | Inserts data into the spreadsheet starting at the specified coordinate.
---
--- /See:/ 'pasteDataRequest' smart constructor.
-data PasteDataRequest =
-  PasteDataRequest'
-    { _pdrData       :: !(Maybe Text)
-    , _pdrCoordinate :: !(Maybe GridCoordinate)
-    , _pdrHTML       :: !(Maybe Bool)
-    , _pdrType       :: !(Maybe PasteDataRequestType)
-    , _pdrDelimiter  :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PasteDataRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pdrData'
---
--- * 'pdrCoordinate'
---
--- * 'pdrHTML'
---
--- * 'pdrType'
---
--- * 'pdrDelimiter'
-pasteDataRequest
-    :: PasteDataRequest
-pasteDataRequest =
-  PasteDataRequest'
-    { _pdrData = Nothing
-    , _pdrCoordinate = Nothing
-    , _pdrHTML = Nothing
-    , _pdrType = Nothing
-    , _pdrDelimiter = Nothing
-    }
-
-
--- | The data to insert.
-pdrData :: Lens' PasteDataRequest (Maybe Text)
-pdrData = lens _pdrData (\ s a -> s{_pdrData = a})
-
--- | The coordinate at which the data should start being inserted.
-pdrCoordinate :: Lens' PasteDataRequest (Maybe GridCoordinate)
-pdrCoordinate
-  = lens _pdrCoordinate
-      (\ s a -> s{_pdrCoordinate = a})
-
--- | True if the data is HTML.
-pdrHTML :: Lens' PasteDataRequest (Maybe Bool)
-pdrHTML = lens _pdrHTML (\ s a -> s{_pdrHTML = a})
-
--- | How the data should be pasted.
-pdrType :: Lens' PasteDataRequest (Maybe PasteDataRequestType)
-pdrType = lens _pdrType (\ s a -> s{_pdrType = a})
-
--- | The delimiter in the data.
-pdrDelimiter :: Lens' PasteDataRequest (Maybe Text)
-pdrDelimiter
-  = lens _pdrDelimiter (\ s a -> s{_pdrDelimiter = a})
-
-instance FromJSON PasteDataRequest where
-        parseJSON
-          = withObject "PasteDataRequest"
-              (\ o ->
-                 PasteDataRequest' <$>
-                   (o .:? "data") <*> (o .:? "coordinate") <*>
-                     (o .:? "html")
-                     <*> (o .:? "type")
-                     <*> (o .:? "delimiter"))
-
-instance ToJSON PasteDataRequest where
-        toJSON PasteDataRequest'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _pdrData,
-                  ("coordinate" .=) <$> _pdrCoordinate,
-                  ("html" .=) <$> _pdrHTML, ("type" .=) <$> _pdrType,
-                  ("delimiter" .=) <$> _pdrDelimiter])
-
--- | Adds new cells after the last row with data in a sheet, inserting new
--- rows into the sheet if necessary.
---
--- /See:/ 'appendCellsRequest' smart constructor.
-data AppendCellsRequest =
-  AppendCellsRequest'
-    { _acrRows    :: !(Maybe [RowData])
-    , _acrSheetId :: !(Maybe (Textual Int32))
-    , _acrFields  :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AppendCellsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acrRows'
---
--- * 'acrSheetId'
---
--- * 'acrFields'
-appendCellsRequest
-    :: AppendCellsRequest
-appendCellsRequest =
-  AppendCellsRequest'
-    {_acrRows = Nothing, _acrSheetId = Nothing, _acrFields = Nothing}
-
-
--- | The data to append.
-acrRows :: Lens' AppendCellsRequest [RowData]
-acrRows
-  = lens _acrRows (\ s a -> s{_acrRows = a}) . _Default
-      . _Coerce
-
--- | The sheet ID to append the data to.
-acrSheetId :: Lens' AppendCellsRequest (Maybe Int32)
-acrSheetId
-  = lens _acrSheetId (\ s a -> s{_acrSheetId = a}) .
-      mapping _Coerce
-
--- | The fields of CellData that should be updated. At least one field must
--- be specified. The root is the CellData; \'row.values.\' should not be
--- specified. A single \`\"*\"\` can be used as short-hand for listing
--- every field.
-acrFields :: Lens' AppendCellsRequest (Maybe GFieldMask)
-acrFields
-  = lens _acrFields (\ s a -> s{_acrFields = a})
-
-instance FromJSON AppendCellsRequest where
-        parseJSON
-          = withObject "AppendCellsRequest"
-              (\ o ->
-                 AppendCellsRequest' <$>
-                   (o .:? "rows" .!= mempty) <*> (o .:? "sheetId") <*>
-                     (o .:? "fields"))
-
-instance ToJSON AppendCellsRequest where
-        toJSON AppendCellsRequest'{..}
-          = object
-              (catMaybes
-                 [("rows" .=) <$> _acrRows,
-                  ("sheetId" .=) <$> _acrSheetId,
-                  ("fields" .=) <$> _acrFields])
-
--- | The result of the find\/replace.
---
--- /See:/ 'findReplaceResponse' smart constructor.
-data FindReplaceResponse =
-  FindReplaceResponse'
-    { _frrValuesChanged      :: !(Maybe (Textual Int32))
-    , _frrFormulasChanged    :: !(Maybe (Textual Int32))
-    , _frrRowsChanged        :: !(Maybe (Textual Int32))
-    , _frrSheetsChanged      :: !(Maybe (Textual Int32))
-    , _frrOccurrencesChanged :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FindReplaceResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frrValuesChanged'
---
--- * 'frrFormulasChanged'
---
--- * 'frrRowsChanged'
---
--- * 'frrSheetsChanged'
---
--- * 'frrOccurrencesChanged'
-findReplaceResponse
-    :: FindReplaceResponse
-findReplaceResponse =
-  FindReplaceResponse'
-    { _frrValuesChanged = Nothing
-    , _frrFormulasChanged = Nothing
-    , _frrRowsChanged = Nothing
-    , _frrSheetsChanged = Nothing
-    , _frrOccurrencesChanged = Nothing
-    }
-
-
--- | The number of non-formula cells changed.
-frrValuesChanged :: Lens' FindReplaceResponse (Maybe Int32)
-frrValuesChanged
-  = lens _frrValuesChanged
-      (\ s a -> s{_frrValuesChanged = a})
-      . mapping _Coerce
-
--- | The number of formula cells changed.
-frrFormulasChanged :: Lens' FindReplaceResponse (Maybe Int32)
-frrFormulasChanged
-  = lens _frrFormulasChanged
-      (\ s a -> s{_frrFormulasChanged = a})
-      . mapping _Coerce
-
--- | The number of rows changed.
-frrRowsChanged :: Lens' FindReplaceResponse (Maybe Int32)
-frrRowsChanged
-  = lens _frrRowsChanged
-      (\ s a -> s{_frrRowsChanged = a})
-      . mapping _Coerce
-
--- | The number of sheets changed.
-frrSheetsChanged :: Lens' FindReplaceResponse (Maybe Int32)
-frrSheetsChanged
-  = lens _frrSheetsChanged
-      (\ s a -> s{_frrSheetsChanged = a})
-      . mapping _Coerce
-
--- | The number of occurrences (possibly multiple within a cell) changed. For
--- example, if replacing \`\"e\"\` with \`\"o\"\` in \`\"Google Sheets\"\`,
--- this would be \`\"3\"\` because \`\"Google Sheets\"\` -> \`\"Googlo
--- Shoots\"\`.
-frrOccurrencesChanged :: Lens' FindReplaceResponse (Maybe Int32)
-frrOccurrencesChanged
-  = lens _frrOccurrencesChanged
-      (\ s a -> s{_frrOccurrencesChanged = a})
-      . mapping _Coerce
-
-instance FromJSON FindReplaceResponse where
-        parseJSON
-          = withObject "FindReplaceResponse"
-              (\ o ->
-                 FindReplaceResponse' <$>
-                   (o .:? "valuesChanged") <*> (o .:? "formulasChanged")
-                     <*> (o .:? "rowsChanged")
-                     <*> (o .:? "sheetsChanged")
-                     <*> (o .:? "occurrencesChanged"))
-
-instance ToJSON FindReplaceResponse where
-        toJSON FindReplaceResponse'{..}
-          = object
-              (catMaybes
-                 [("valuesChanged" .=) <$> _frrValuesChanged,
-                  ("formulasChanged" .=) <$> _frrFormulasChanged,
-                  ("rowsChanged" .=) <$> _frrRowsChanged,
-                  ("sheetsChanged" .=) <$> _frrSheetsChanged,
-                  ("occurrencesChanged" .=) <$>
-                    _frrOccurrencesChanged])
-
--- | The result of adding a group.
---
--- /See:/ 'addDimensionGroupResponse' smart constructor.
-newtype AddDimensionGroupResponse =
-  AddDimensionGroupResponse'
-    { _adgrDimensionGroups :: Maybe [DimensionGroup]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddDimensionGroupResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adgrDimensionGroups'
-addDimensionGroupResponse
-    :: AddDimensionGroupResponse
-addDimensionGroupResponse =
-  AddDimensionGroupResponse' {_adgrDimensionGroups = Nothing}
-
-
--- | All groups of a dimension after adding a group to that dimension.
-adgrDimensionGroups :: Lens' AddDimensionGroupResponse [DimensionGroup]
-adgrDimensionGroups
-  = lens _adgrDimensionGroups
-      (\ s a -> s{_adgrDimensionGroups = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON AddDimensionGroupResponse where
-        parseJSON
-          = withObject "AddDimensionGroupResponse"
-              (\ o ->
-                 AddDimensionGroupResponse' <$>
-                   (o .:? "dimensionGroups" .!= mempty))
-
-instance ToJSON AddDimensionGroupResponse where
-        toJSON AddDimensionGroupResponse'{..}
-          = object
-              (catMaybes
-                 [("dimensionGroups" .=) <$> _adgrDimensionGroups])
-
--- | A </chart/interactive/docs/gallery/piechart pie chart>.
---
--- /See:/ 'pieChartSpec' smart constructor.
-data PieChartSpec =
-  PieChartSpec'
-    { _pcsPieHole          :: !(Maybe (Textual Double))
-    , _pcsLegendPosition   :: !(Maybe PieChartSpecLegendPosition)
-    , _pcsDomain           :: !(Maybe ChartData)
-    , _pcsSeries           :: !(Maybe ChartData)
-    , _pcsThreeDimensional :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PieChartSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pcsPieHole'
---
--- * 'pcsLegendPosition'
---
--- * 'pcsDomain'
---
--- * 'pcsSeries'
---
--- * 'pcsThreeDimensional'
-pieChartSpec
-    :: PieChartSpec
-pieChartSpec =
-  PieChartSpec'
-    { _pcsPieHole = Nothing
-    , _pcsLegendPosition = Nothing
-    , _pcsDomain = Nothing
-    , _pcsSeries = Nothing
-    , _pcsThreeDimensional = Nothing
-    }
-
-
--- | The size of the hole in the pie chart.
-pcsPieHole :: Lens' PieChartSpec (Maybe Double)
-pcsPieHole
-  = lens _pcsPieHole (\ s a -> s{_pcsPieHole = a}) .
-      mapping _Coerce
-
--- | Where the legend of the pie chart should be drawn.
-pcsLegendPosition :: Lens' PieChartSpec (Maybe PieChartSpecLegendPosition)
-pcsLegendPosition
-  = lens _pcsLegendPosition
-      (\ s a -> s{_pcsLegendPosition = a})
-
--- | The data that covers the domain of the pie chart.
-pcsDomain :: Lens' PieChartSpec (Maybe ChartData)
-pcsDomain
-  = lens _pcsDomain (\ s a -> s{_pcsDomain = a})
-
--- | The data that covers the one and only series of the pie chart.
-pcsSeries :: Lens' PieChartSpec (Maybe ChartData)
-pcsSeries
-  = lens _pcsSeries (\ s a -> s{_pcsSeries = a})
-
--- | True if the pie is three dimensional.
-pcsThreeDimensional :: Lens' PieChartSpec (Maybe Bool)
-pcsThreeDimensional
-  = lens _pcsThreeDimensional
-      (\ s a -> s{_pcsThreeDimensional = a})
-
-instance FromJSON PieChartSpec where
-        parseJSON
-          = withObject "PieChartSpec"
-              (\ o ->
-                 PieChartSpec' <$>
-                   (o .:? "pieHole") <*> (o .:? "legendPosition") <*>
-                     (o .:? "domain")
-                     <*> (o .:? "series")
-                     <*> (o .:? "threeDimensional"))
-
-instance ToJSON PieChartSpec where
-        toJSON PieChartSpec'{..}
-          = object
-              (catMaybes
-                 [("pieHole" .=) <$> _pcsPieHole,
-                  ("legendPosition" .=) <$> _pcsLegendPosition,
-                  ("domain" .=) <$> _pcsDomain,
-                  ("series" .=) <$> _pcsSeries,
-                  ("threeDimensional" .=) <$> _pcsThreeDimensional])
-
--- | The response when updating a range of values in a spreadsheet.
---
--- /See:/ 'batchUpdateValuesByDataFilterResponse' smart constructor.
-data BatchUpdateValuesByDataFilterResponse =
-  BatchUpdateValuesByDataFilterResponse'
-    { _buvbdfrTotalUpdatedColumns :: !(Maybe (Textual Int32))
-    , _buvbdfrResponses           :: !(Maybe [UpdateValuesByDataFilterResponse])
-    , _buvbdfrSpreadsheetId       :: !(Maybe Text)
-    , _buvbdfrTotalUpdatedSheets  :: !(Maybe (Textual Int32))
-    , _buvbdfrTotalUpdatedCells   :: !(Maybe (Textual Int32))
-    , _buvbdfrTotalUpdatedRows    :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchUpdateValuesByDataFilterResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'buvbdfrTotalUpdatedColumns'
---
--- * 'buvbdfrResponses'
---
--- * 'buvbdfrSpreadsheetId'
---
--- * 'buvbdfrTotalUpdatedSheets'
---
--- * 'buvbdfrTotalUpdatedCells'
---
--- * 'buvbdfrTotalUpdatedRows'
-batchUpdateValuesByDataFilterResponse
-    :: BatchUpdateValuesByDataFilterResponse
-batchUpdateValuesByDataFilterResponse =
-  BatchUpdateValuesByDataFilterResponse'
-    { _buvbdfrTotalUpdatedColumns = Nothing
-    , _buvbdfrResponses = Nothing
-    , _buvbdfrSpreadsheetId = Nothing
-    , _buvbdfrTotalUpdatedSheets = Nothing
-    , _buvbdfrTotalUpdatedCells = Nothing
-    , _buvbdfrTotalUpdatedRows = Nothing
-    }
-
-
--- | The total number of columns where at least one cell in the column was
--- updated.
-buvbdfrTotalUpdatedColumns :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
-buvbdfrTotalUpdatedColumns
-  = lens _buvbdfrTotalUpdatedColumns
-      (\ s a -> s{_buvbdfrTotalUpdatedColumns = a})
-      . mapping _Coerce
-
--- | The response for each range updated.
-buvbdfrResponses :: Lens' BatchUpdateValuesByDataFilterResponse [UpdateValuesByDataFilterResponse]
-buvbdfrResponses
-  = lens _buvbdfrResponses
-      (\ s a -> s{_buvbdfrResponses = a})
-      . _Default
-      . _Coerce
-
--- | The spreadsheet the updates were applied to.
-buvbdfrSpreadsheetId :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Text)
-buvbdfrSpreadsheetId
-  = lens _buvbdfrSpreadsheetId
-      (\ s a -> s{_buvbdfrSpreadsheetId = a})
-
--- | The total number of sheets where at least one cell in the sheet was
--- updated.
-buvbdfrTotalUpdatedSheets :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
-buvbdfrTotalUpdatedSheets
-  = lens _buvbdfrTotalUpdatedSheets
-      (\ s a -> s{_buvbdfrTotalUpdatedSheets = a})
-      . mapping _Coerce
-
--- | The total number of cells updated.
-buvbdfrTotalUpdatedCells :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
-buvbdfrTotalUpdatedCells
-  = lens _buvbdfrTotalUpdatedCells
-      (\ s a -> s{_buvbdfrTotalUpdatedCells = a})
-      . mapping _Coerce
-
--- | The total number of rows where at least one cell in the row was updated.
-buvbdfrTotalUpdatedRows :: Lens' BatchUpdateValuesByDataFilterResponse (Maybe Int32)
-buvbdfrTotalUpdatedRows
-  = lens _buvbdfrTotalUpdatedRows
-      (\ s a -> s{_buvbdfrTotalUpdatedRows = a})
-      . mapping _Coerce
-
-instance FromJSON
-           BatchUpdateValuesByDataFilterResponse
-         where
-        parseJSON
-          = withObject "BatchUpdateValuesByDataFilterResponse"
-              (\ o ->
-                 BatchUpdateValuesByDataFilterResponse' <$>
-                   (o .:? "totalUpdatedColumns") <*>
-                     (o .:? "responses" .!= mempty)
-                     <*> (o .:? "spreadsheetId")
-                     <*> (o .:? "totalUpdatedSheets")
-                     <*> (o .:? "totalUpdatedCells")
-                     <*> (o .:? "totalUpdatedRows"))
-
-instance ToJSON BatchUpdateValuesByDataFilterResponse
-         where
-        toJSON BatchUpdateValuesByDataFilterResponse'{..}
-          = object
-              (catMaybes
-                 [("totalUpdatedColumns" .=) <$>
-                    _buvbdfrTotalUpdatedColumns,
-                  ("responses" .=) <$> _buvbdfrResponses,
-                  ("spreadsheetId" .=) <$> _buvbdfrSpreadsheetId,
-                  ("totalUpdatedSheets" .=) <$>
-                    _buvbdfrTotalUpdatedSheets,
-                  ("totalUpdatedCells" .=) <$>
-                    _buvbdfrTotalUpdatedCells,
-                  ("totalUpdatedRows" .=) <$>
-                    _buvbdfrTotalUpdatedRows])
-
--- | The response when updating a range of values in a spreadsheet.
---
--- /See:/ 'appendValuesResponse' smart constructor.
-data AppendValuesResponse =
-  AppendValuesResponse'
-    { _avrSpreadsheetId :: !(Maybe Text)
-    , _avrUpdates       :: !(Maybe UpdateValuesResponse)
-    , _avrTableRange    :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AppendValuesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'avrSpreadsheetId'
---
--- * 'avrUpdates'
---
--- * 'avrTableRange'
-appendValuesResponse
-    :: AppendValuesResponse
-appendValuesResponse =
-  AppendValuesResponse'
-    { _avrSpreadsheetId = Nothing
-    , _avrUpdates = Nothing
-    , _avrTableRange = Nothing
-    }
-
-
--- | The spreadsheet the updates were applied to.
-avrSpreadsheetId :: Lens' AppendValuesResponse (Maybe Text)
-avrSpreadsheetId
-  = lens _avrSpreadsheetId
-      (\ s a -> s{_avrSpreadsheetId = a})
-
--- | Information about the updates that were applied.
-avrUpdates :: Lens' AppendValuesResponse (Maybe UpdateValuesResponse)
-avrUpdates
-  = lens _avrUpdates (\ s a -> s{_avrUpdates = a})
-
--- | The range (in A1 notation) of the table that values are being appended
--- to (before the values were appended). Empty if no table was found.
-avrTableRange :: Lens' AppendValuesResponse (Maybe Text)
-avrTableRange
-  = lens _avrTableRange
-      (\ s a -> s{_avrTableRange = a})
-
-instance FromJSON AppendValuesResponse where
-        parseJSON
-          = withObject "AppendValuesResponse"
-              (\ o ->
-                 AppendValuesResponse' <$>
-                   (o .:? "spreadsheetId") <*> (o .:? "updates") <*>
-                     (o .:? "tableRange"))
-
-instance ToJSON AppendValuesResponse where
-        toJSON AppendValuesResponse'{..}
-          = object
-              (catMaybes
-                 [("spreadsheetId" .=) <$> _avrSpreadsheetId,
-                  ("updates" .=) <$> _avrUpdates,
-                  ("tableRange" .=) <$> _avrTableRange])
-
--- | A data validation rule.
---
--- /See:/ 'dataValidationRule' smart constructor.
-data DataValidationRule =
-  DataValidationRule'
-    { _dvrShowCustomUi :: !(Maybe Bool)
-    , _dvrInputMessage :: !(Maybe Text)
-    , _dvrStrict       :: !(Maybe Bool)
-    , _dvrCondition    :: !(Maybe BooleanCondition)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DataValidationRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dvrShowCustomUi'
---
--- * 'dvrInputMessage'
---
--- * 'dvrStrict'
---
--- * 'dvrCondition'
-dataValidationRule
-    :: DataValidationRule
-dataValidationRule =
-  DataValidationRule'
-    { _dvrShowCustomUi = Nothing
-    , _dvrInputMessage = Nothing
-    , _dvrStrict = Nothing
-    , _dvrCondition = Nothing
-    }
-
-
--- | True if the UI should be customized based on the kind of condition. If
--- true, \"List\" conditions will show a dropdown.
-dvrShowCustomUi :: Lens' DataValidationRule (Maybe Bool)
-dvrShowCustomUi
-  = lens _dvrShowCustomUi
-      (\ s a -> s{_dvrShowCustomUi = a})
-
--- | A message to show the user when adding data to the cell.
-dvrInputMessage :: Lens' DataValidationRule (Maybe Text)
-dvrInputMessage
-  = lens _dvrInputMessage
-      (\ s a -> s{_dvrInputMessage = a})
-
--- | True if invalid data should be rejected.
-dvrStrict :: Lens' DataValidationRule (Maybe Bool)
-dvrStrict
-  = lens _dvrStrict (\ s a -> s{_dvrStrict = a})
-
--- | The condition that data in the cell must match.
-dvrCondition :: Lens' DataValidationRule (Maybe BooleanCondition)
-dvrCondition
-  = lens _dvrCondition (\ s a -> s{_dvrCondition = a})
-
-instance FromJSON DataValidationRule where
-        parseJSON
-          = withObject "DataValidationRule"
-              (\ o ->
-                 DataValidationRule' <$>
-                   (o .:? "showCustomUi") <*> (o .:? "inputMessage") <*>
-                     (o .:? "strict")
-                     <*> (o .:? "condition"))
-
-instance ToJSON DataValidationRule where
-        toJSON DataValidationRule'{..}
-          = object
-              (catMaybes
-                 [("showCustomUi" .=) <$> _dvrShowCustomUi,
-                  ("inputMessage" .=) <$> _dvrInputMessage,
-                  ("strict" .=) <$> _dvrStrict,
-                  ("condition" .=) <$> _dvrCondition])
-
--- | A filter view.
---
--- /See:/ 'filterView' smart constructor.
-data FilterView =
-  FilterView'
-    { _fvSortSpecs    :: !(Maybe [SortSpec])
-    , _fvNamedRangeId :: !(Maybe Text)
-    , _fvRange        :: !(Maybe GridRange)
-    , _fvFilterViewId :: !(Maybe (Textual Int32))
-    , _fvTitle        :: !(Maybe Text)
-    , _fvCriteria     :: !(Maybe FilterViewCriteria)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FilterView' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fvSortSpecs'
---
--- * 'fvNamedRangeId'
---
--- * 'fvRange'
---
--- * 'fvFilterViewId'
---
--- * 'fvTitle'
---
--- * 'fvCriteria'
-filterView
-    :: FilterView
-filterView =
-  FilterView'
-    { _fvSortSpecs = Nothing
-    , _fvNamedRangeId = Nothing
-    , _fvRange = Nothing
-    , _fvFilterViewId = Nothing
-    , _fvTitle = Nothing
-    , _fvCriteria = Nothing
-    }
-
-
--- | The sort order per column. Later specifications are used when values are
--- equal in the earlier specifications.
-fvSortSpecs :: Lens' FilterView [SortSpec]
-fvSortSpecs
-  = lens _fvSortSpecs (\ s a -> s{_fvSortSpecs = a}) .
-      _Default
-      . _Coerce
-
--- | The named range this filter view is backed by, if any. When writing,
--- only one of range or named_range_id may be set.
-fvNamedRangeId :: Lens' FilterView (Maybe Text)
-fvNamedRangeId
-  = lens _fvNamedRangeId
-      (\ s a -> s{_fvNamedRangeId = a})
-
--- | The range this filter view covers. When writing, only one of range or
--- named_range_id may be set.
-fvRange :: Lens' FilterView (Maybe GridRange)
-fvRange = lens _fvRange (\ s a -> s{_fvRange = a})
-
--- | The ID of the filter view.
-fvFilterViewId :: Lens' FilterView (Maybe Int32)
-fvFilterViewId
-  = lens _fvFilterViewId
-      (\ s a -> s{_fvFilterViewId = a})
-      . mapping _Coerce
-
--- | The name of the filter view.
-fvTitle :: Lens' FilterView (Maybe Text)
-fvTitle = lens _fvTitle (\ s a -> s{_fvTitle = a})
-
--- | The criteria for showing\/hiding values per column. The map\'s key is
--- the column index, and the value is the criteria for that column.
-fvCriteria :: Lens' FilterView (Maybe FilterViewCriteria)
-fvCriteria
-  = lens _fvCriteria (\ s a -> s{_fvCriteria = a})
-
-instance FromJSON FilterView where
-        parseJSON
-          = withObject "FilterView"
-              (\ o ->
-                 FilterView' <$>
-                   (o .:? "sortSpecs" .!= mempty) <*>
-                     (o .:? "namedRangeId")
-                     <*> (o .:? "range")
-                     <*> (o .:? "filterViewId")
-                     <*> (o .:? "title")
-                     <*> (o .:? "criteria"))
-
-instance ToJSON FilterView where
-        toJSON FilterView'{..}
-          = object
-              (catMaybes
-                 [("sortSpecs" .=) <$> _fvSortSpecs,
-                  ("namedRangeId" .=) <$> _fvNamedRangeId,
-                  ("range" .=) <$> _fvRange,
-                  ("filterViewId" .=) <$> _fvFilterViewId,
-                  ("title" .=) <$> _fvTitle,
-                  ("criteria" .=) <$> _fvCriteria])
-
--- | Represents a color in the RGBA color space. This representation is
--- designed for simplicity of conversion to\/from color representations in
--- various languages over compactness; for example, the fields of this
--- representation can be trivially provided to the constructor of
--- \"java.awt.Color\" in Java; it can also be trivially provided to
--- UIColor\'s \"+colorWithRed:green:blue:alpha\" method in iOS; and, with
--- just a little work, it can be easily formatted into a CSS \"rgba()\"
--- string in JavaScript, as well. Note: this proto does not carry
--- information about the absolute color space that should be used to
--- interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.).
--- By default, applications SHOULD assume the sRGB color space. Example
--- (Java): import com.google.type.Color; \/\/ ... public static
--- java.awt.Color fromProto(Color protocolor) { float alpha =
--- protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return
--- new java.awt.Color( protocolor.getRed(), protocolor.getGreen(),
--- protocolor.getBlue(), alpha); } public static Color
--- toProto(java.awt.Color color) { float red = (float) color.getRed();
--- float green = (float) color.getGreen(); float blue = (float)
--- color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder
--- = Color .newBuilder() .setRed(red \/ denominator) .setGreen(green \/
--- denominator) .setBlue(blue \/ denominator); int alpha =
--- color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue
--- .newBuilder() .setValue(((float) alpha) \/ denominator) .build()); }
--- return resultBuilder.build(); } \/\/ ... Example (iOS \/ Obj-C): \/\/
--- ... static UIColor* fromProto(Color* protocolor) { float red =
--- [protocolor red]; float green = [protocolor green]; float blue =
--- [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float
--- alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value];
--- } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; }
--- static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha;
--- if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return
--- nil; } Color* result = [[Color alloc] init]; [result setRed:red];
--- [result setGreen:green]; [result setBlue:blue]; if (alpha \<= 0.9999) {
--- [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease];
--- return result; } \/\/ ... Example (JavaScript): \/\/ ... var
--- protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red ||
--- 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac =
--- rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green =
--- Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if
--- (!(\'alpha\' in rgb_color)) { return rgbToCssColor_(red, green, blue); }
--- var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red,
--- green, blue].join(\',\'); return [\'rgba(\', rgbParams, \',\',
--- alphaFrac, \')\'].join(\'\'); }; var rgbToCssColor_ = function(red,
--- green, blue) { var rgbNumber = new Number((red \<\< 16) | (green \<\< 8)
--- | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 -
--- hexString.length; var resultBuilder = [\'#\']; for (var i = 0; i \<
--- missingZeros; i++) { resultBuilder.push(\'0\'); }
--- resultBuilder.push(hexString); return resultBuilder.join(\'\'); }; \/\/
--- ...
---
--- /See:/ 'color' smart constructor.
-data Color =
-  Color'
-    { _cRed   :: !(Maybe (Textual Double))
-    , _cAlpha :: !(Maybe (Textual Double))
-    , _cGreen :: !(Maybe (Textual Double))
-    , _cBlue  :: !(Maybe (Textual Double))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Color' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cRed'
---
--- * 'cAlpha'
---
--- * 'cGreen'
---
--- * 'cBlue'
-color
-    :: Color
-color =
-  Color'
-    {_cRed = Nothing, _cAlpha = Nothing, _cGreen = Nothing, _cBlue = Nothing}
-
-
--- | The amount of red in the color as a value in the interval [0, 1].
-cRed :: Lens' Color (Maybe Double)
-cRed
-  = lens _cRed (\ s a -> s{_cRed = a}) .
-      mapping _Coerce
-
--- | The fraction of this color that should be applied to the pixel. That is,
--- the final pixel color is defined by the equation: pixel color = alpha *
--- (this color) + (1.0 - alpha) * (background color) This means that a
--- value of 1.0 corresponds to a solid color, whereas a value of 0.0
--- corresponds to a completely transparent color. This uses a wrapper
--- message rather than a simple float scalar so that it is possible to
--- distinguish between a default value and the value being unset. If
--- omitted, this color object is to be rendered as a solid color (as if the
--- alpha value had been explicitly given with a value of 1.0).
-cAlpha :: Lens' Color (Maybe Double)
-cAlpha
-  = lens _cAlpha (\ s a -> s{_cAlpha = a}) .
-      mapping _Coerce
-
--- | The amount of green in the color as a value in the interval [0, 1].
-cGreen :: Lens' Color (Maybe Double)
-cGreen
-  = lens _cGreen (\ s a -> s{_cGreen = a}) .
-      mapping _Coerce
-
--- | The amount of blue in the color as a value in the interval [0, 1].
-cBlue :: Lens' Color (Maybe Double)
-cBlue
-  = lens _cBlue (\ s a -> s{_cBlue = a}) .
-      mapping _Coerce
-
-instance FromJSON Color where
-        parseJSON
-          = withObject "Color"
-              (\ o ->
-                 Color' <$>
-                   (o .:? "red") <*> (o .:? "alpha") <*> (o .:? "green")
-                     <*> (o .:? "blue"))
-
-instance ToJSON Color where
-        toJSON Color'{..}
-          = object
-              (catMaybes
-                 [("red" .=) <$> _cRed, ("alpha" .=) <$> _cAlpha,
-                  ("green" .=) <$> _cGreen, ("blue" .=) <$> _cBlue])
-
--- | Deletes a particular filter view.
---
--- /See:/ 'deleteFilterViewRequest' smart constructor.
-newtype DeleteFilterViewRequest =
-  DeleteFilterViewRequest'
-    { _dfvrFilterId :: Maybe (Textual Int32)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteFilterViewRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfvrFilterId'
-deleteFilterViewRequest
-    :: DeleteFilterViewRequest
-deleteFilterViewRequest = DeleteFilterViewRequest' {_dfvrFilterId = Nothing}
-
-
--- | The ID of the filter to delete.
-dfvrFilterId :: Lens' DeleteFilterViewRequest (Maybe Int32)
-dfvrFilterId
-  = lens _dfvrFilterId (\ s a -> s{_dfvrFilterId = a})
-      . mapping _Coerce
-
-instance FromJSON DeleteFilterViewRequest where
-        parseJSON
-          = withObject "DeleteFilterViewRequest"
-              (\ o ->
-                 DeleteFilterViewRequest' <$> (o .:? "filterId"))
-
-instance ToJSON DeleteFilterViewRequest where
-        toJSON DeleteFilterViewRequest'{..}
-          = object
-              (catMaybes [("filterId" .=) <$> _dfvrFilterId])
-
--- | Updates properties of the filter view.
---
--- /See:/ 'updateFilterViewRequest' smart constructor.
-data UpdateFilterViewRequest =
-  UpdateFilterViewRequest'
-    { _ufvrFilter :: !(Maybe FilterView)
-    , _ufvrFields :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateFilterViewRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ufvrFilter'
---
--- * 'ufvrFields'
-updateFilterViewRequest
-    :: UpdateFilterViewRequest
-updateFilterViewRequest =
-  UpdateFilterViewRequest' {_ufvrFilter = Nothing, _ufvrFields = Nothing}
-
-
--- | The new properties of the filter view.
-ufvrFilter :: Lens' UpdateFilterViewRequest (Maybe FilterView)
-ufvrFilter
-  = lens _ufvrFilter (\ s a -> s{_ufvrFilter = a})
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \`filter\` is implied and should not be specified. A single
--- \`\"*\"\` can be used as short-hand for listing every field.
-ufvrFields :: Lens' UpdateFilterViewRequest (Maybe GFieldMask)
-ufvrFields
-  = lens _ufvrFields (\ s a -> s{_ufvrFields = a})
-
-instance FromJSON UpdateFilterViewRequest where
-        parseJSON
-          = withObject "UpdateFilterViewRequest"
-              (\ o ->
-                 UpdateFilterViewRequest' <$>
-                   (o .:? "filter") <*> (o .:? "fields"))
-
-instance ToJSON UpdateFilterViewRequest where
-        toJSON UpdateFilterViewRequest'{..}
-          = object
-              (catMaybes
-                 [("filter" .=) <$> _ufvrFilter,
-                  ("fields" .=) <$> _ufvrFields])
-
--- | A single series of data in a chart. For example, if charting stock
--- prices over time, multiple series may exist, one for the \"Open Price\",
--- \"High Price\", \"Low Price\" and \"Close Price\".
---
--- /See:/ 'basicChartSeries' smart constructor.
-data BasicChartSeries =
-  BasicChartSeries'
-    { _bTargetAxis :: !(Maybe BasicChartSeriesTargetAxis)
-    , _bColor      :: !(Maybe Color)
-    , _bSeries     :: !(Maybe ChartData)
-    , _bType       :: !(Maybe BasicChartSeriesType)
-    , _bLineStyle  :: !(Maybe LineStyle)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BasicChartSeries' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bTargetAxis'
---
--- * 'bColor'
---
--- * 'bSeries'
---
--- * 'bType'
---
--- * 'bLineStyle'
-basicChartSeries
-    :: BasicChartSeries
-basicChartSeries =
-  BasicChartSeries'
-    { _bTargetAxis = Nothing
-    , _bColor = Nothing
-    , _bSeries = Nothing
-    , _bType = Nothing
-    , _bLineStyle = Nothing
-    }
-
-
--- | The minor axis that will specify the range of values for this series.
--- For example, if charting stocks over time, the \"Volume\" series may
--- want to be pinned to the right with the prices pinned to the left,
--- because the scale of trading volume is different than the scale of
--- prices. It is an error to specify an axis that isn\'t a valid minor axis
--- for the chart\'s type.
-bTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)
-bTargetAxis
-  = lens _bTargetAxis (\ s a -> s{_bTargetAxis = a})
-
--- | The color for elements (i.e. bars, lines, points) associated with this
--- series. If empty, a default color is used.
-bColor :: Lens' BasicChartSeries (Maybe Color)
-bColor = lens _bColor (\ s a -> s{_bColor = a})
-
--- | The data being visualized in this chart series.
-bSeries :: Lens' BasicChartSeries (Maybe ChartData)
-bSeries = lens _bSeries (\ s a -> s{_bSeries = a})
-
--- | The type of this series. Valid only if the chartType is COMBO. Different
--- types will change the way the series is visualized. Only LINE, AREA, and
--- COLUMN are supported.
-bType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)
-bType = lens _bType (\ s a -> s{_bType = a})
-
--- | The line style of this series. Valid only if the chartType is AREA,
--- LINE, or SCATTER. COMBO charts are also supported if the series chart
--- type is AREA or LINE.
-bLineStyle :: Lens' BasicChartSeries (Maybe LineStyle)
-bLineStyle
-  = lens _bLineStyle (\ s a -> s{_bLineStyle = a})
-
-instance FromJSON BasicChartSeries where
-        parseJSON
-          = withObject "BasicChartSeries"
-              (\ o ->
-                 BasicChartSeries' <$>
-                   (o .:? "targetAxis") <*> (o .:? "color") <*>
-                     (o .:? "series")
-                     <*> (o .:? "type")
-                     <*> (o .:? "lineStyle"))
-
-instance ToJSON BasicChartSeries where
-        toJSON BasicChartSeries'{..}
-          = object
-              (catMaybes
-                 [("targetAxis" .=) <$> _bTargetAxis,
-                  ("color" .=) <$> _bColor, ("series" .=) <$> _bSeries,
-                  ("type" .=) <$> _bType,
-                  ("lineStyle" .=) <$> _bLineStyle])
-
--- | An optional setting on a PivotGroup that defines buckets for the values
--- in the source data column rather than breaking out each individual
--- value. Only one PivotGroup with a group rule may be added for each
--- column in the source data, though on any given column you may add both a
--- PivotGroup that has a rule and a PivotGroup that does not.
---
--- /See:/ 'pivotGroupRule' smart constructor.
-data PivotGroupRule =
-  PivotGroupRule'
-    { _pgrDateTimeRule  :: !(Maybe DateTimeRule)
-    , _pgrManualRule    :: !(Maybe ManualRule)
-    , _pgrHistogramRule :: !(Maybe HistogramRule)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PivotGroupRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pgrDateTimeRule'
---
--- * 'pgrManualRule'
---
--- * 'pgrHistogramRule'
-pivotGroupRule
-    :: PivotGroupRule
-pivotGroupRule =
-  PivotGroupRule'
-    { _pgrDateTimeRule = Nothing
-    , _pgrManualRule = Nothing
-    , _pgrHistogramRule = Nothing
-    }
-
-
--- | A DateTimeRule.
-pgrDateTimeRule :: Lens' PivotGroupRule (Maybe DateTimeRule)
-pgrDateTimeRule
-  = lens _pgrDateTimeRule
-      (\ s a -> s{_pgrDateTimeRule = a})
-
--- | A ManualRule.
-pgrManualRule :: Lens' PivotGroupRule (Maybe ManualRule)
-pgrManualRule
-  = lens _pgrManualRule
-      (\ s a -> s{_pgrManualRule = a})
-
--- | A HistogramRule.
-pgrHistogramRule :: Lens' PivotGroupRule (Maybe HistogramRule)
-pgrHistogramRule
-  = lens _pgrHistogramRule
-      (\ s a -> s{_pgrHistogramRule = a})
-
-instance FromJSON PivotGroupRule where
-        parseJSON
-          = withObject "PivotGroupRule"
-              (\ o ->
-                 PivotGroupRule' <$>
-                   (o .:? "dateTimeRule") <*> (o .:? "manualRule") <*>
-                     (o .:? "histogramRule"))
-
-instance ToJSON PivotGroupRule where
-        toJSON PivotGroupRule'{..}
-          = object
-              (catMaybes
-                 [("dateTimeRule" .=) <$> _pgrDateTimeRule,
-                  ("manualRule" .=) <$> _pgrManualRule,
-                  ("histogramRule" .=) <$> _pgrHistogramRule])
-
--- | Adds a new protected range.
---
--- /See:/ 'addProtectedRangeRequest' smart constructor.
-newtype AddProtectedRangeRequest =
-  AddProtectedRangeRequest'
-    { _aprrProtectedRange :: Maybe ProtectedRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddProtectedRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aprrProtectedRange'
-addProtectedRangeRequest
-    :: AddProtectedRangeRequest
-addProtectedRangeRequest =
-  AddProtectedRangeRequest' {_aprrProtectedRange = Nothing}
-
-
--- | The protected range to be added. The protectedRangeId field is optional;
--- if one is not set, an id will be randomly generated. (It is an error to
--- specify the ID of a range that already exists.)
-aprrProtectedRange :: Lens' AddProtectedRangeRequest (Maybe ProtectedRange)
-aprrProtectedRange
-  = lens _aprrProtectedRange
-      (\ s a -> s{_aprrProtectedRange = a})
-
-instance FromJSON AddProtectedRangeRequest where
-        parseJSON
-          = withObject "AddProtectedRangeRequest"
-              (\ o ->
-                 AddProtectedRangeRequest' <$>
-                   (o .:? "protectedRange"))
-
-instance ToJSON AddProtectedRangeRequest where
-        toJSON AddProtectedRangeRequest'{..}
-          = object
-              (catMaybes
-                 [("protectedRange" .=) <$> _aprrProtectedRange])
-
--- | Updates all cells in the range to the values in the given Cell object.
--- Only the fields listed in the fields field are updated; others are
--- unchanged. If writing a cell with a formula, the formula\'s ranges will
--- automatically increment for each field in the range. For example, if
--- writing a cell with formula \`=A1\` into range B2:C4, B2 would be
--- \`=A1\`, B3 would be \`=A2\`, B4 would be \`=A3\`, C2 would be \`=B1\`,
--- C3 would be \`=B2\`, C4 would be \`=B3\`. To keep the formula\'s ranges
--- static, use the \`$\` indicator. For example, use the formula \`=$A$1\`
--- to prevent both the row and the column from incrementing.
---
--- /See:/ 'repeatCellRequest' smart constructor.
-data RepeatCellRequest =
-  RepeatCellRequest'
-    { _rcrCell   :: !(Maybe CellData)
-    , _rcrRange  :: !(Maybe GridRange)
-    , _rcrFields :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RepeatCellRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcrCell'
---
--- * 'rcrRange'
---
--- * 'rcrFields'
-repeatCellRequest
-    :: RepeatCellRequest
-repeatCellRequest =
-  RepeatCellRequest'
-    {_rcrCell = Nothing, _rcrRange = Nothing, _rcrFields = Nothing}
-
-
--- | The data to write.
-rcrCell :: Lens' RepeatCellRequest (Maybe CellData)
-rcrCell = lens _rcrCell (\ s a -> s{_rcrCell = a})
-
--- | The range to repeat the cell in.
-rcrRange :: Lens' RepeatCellRequest (Maybe GridRange)
-rcrRange = lens _rcrRange (\ s a -> s{_rcrRange = a})
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \`cell\` is implied and should not be specified. A single
--- \`\"*\"\` can be used as short-hand for listing every field.
-rcrFields :: Lens' RepeatCellRequest (Maybe GFieldMask)
-rcrFields
-  = lens _rcrFields (\ s a -> s{_rcrFields = a})
-
-instance FromJSON RepeatCellRequest where
-        parseJSON
-          = withObject "RepeatCellRequest"
-              (\ o ->
-                 RepeatCellRequest' <$>
-                   (o .:? "cell") <*> (o .:? "range") <*>
-                     (o .:? "fields"))
-
-instance ToJSON RepeatCellRequest where
-        toJSON RepeatCellRequest'{..}
-          = object
-              (catMaybes
-                 [("cell" .=) <$> _rcrCell,
-                  ("range" .=) <$> _rcrRange,
-                  ("fields" .=) <$> _rcrFields])
-
--- | The value of the condition.
---
--- /See:/ 'conditionValue' smart constructor.
-data ConditionValue =
-  ConditionValue'
-    { _cvRelativeDate     :: !(Maybe ConditionValueRelativeDate)
-    , _cvUserEnteredValue :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ConditionValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cvRelativeDate'
---
--- * 'cvUserEnteredValue'
-conditionValue
-    :: ConditionValue
-conditionValue =
-  ConditionValue' {_cvRelativeDate = Nothing, _cvUserEnteredValue = Nothing}
-
-
--- | A relative date (based on the current date). Valid only if the type is
--- DATE_BEFORE, DATE_AFTER, DATE_ON_OR_BEFORE or DATE_ON_OR_AFTER. Relative
--- dates are not supported in data validation. They are supported only in
--- conditional formatting and conditional filters.
-cvRelativeDate :: Lens' ConditionValue (Maybe ConditionValueRelativeDate)
-cvRelativeDate
-  = lens _cvRelativeDate
-      (\ s a -> s{_cvRelativeDate = a})
-
--- | A value the condition is based on. The value is parsed as if the user
--- typed into a cell. Formulas are supported (and must begin with an \`=\`
--- or a \'+\').
-cvUserEnteredValue :: Lens' ConditionValue (Maybe Text)
-cvUserEnteredValue
-  = lens _cvUserEnteredValue
-      (\ s a -> s{_cvUserEnteredValue = a})
-
-instance FromJSON ConditionValue where
-        parseJSON
-          = withObject "ConditionValue"
-              (\ o ->
-                 ConditionValue' <$>
-                   (o .:? "relativeDate") <*>
-                     (o .:? "userEnteredValue"))
-
-instance ToJSON ConditionValue where
-        toJSON ConditionValue'{..}
-          = object
-              (catMaybes
-                 [("relativeDate" .=) <$> _cvRelativeDate,
-                  ("userEnteredValue" .=) <$> _cvUserEnteredValue])
-
--- | Deletes the dimensions from the sheet.
---
--- /See:/ 'deleteDimensionRequest' smart constructor.
-newtype DeleteDimensionRequest =
-  DeleteDimensionRequest'
-    { _ddrRange :: Maybe DimensionRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteDimensionRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddrRange'
-deleteDimensionRequest
-    :: DeleteDimensionRequest
-deleteDimensionRequest = DeleteDimensionRequest' {_ddrRange = Nothing}
-
-
--- | The dimensions to delete from the sheet.
-ddrRange :: Lens' DeleteDimensionRequest (Maybe DimensionRange)
-ddrRange = lens _ddrRange (\ s a -> s{_ddrRange = a})
-
-instance FromJSON DeleteDimensionRequest where
-        parseJSON
-          = withObject "DeleteDimensionRequest"
-              (\ o -> DeleteDimensionRequest' <$> (o .:? "range"))
-
-instance ToJSON DeleteDimensionRequest where
-        toJSON DeleteDimensionRequest'{..}
-          = object (catMaybes [("range" .=) <$> _ddrRange])
-
--- | The request for clearing a range of values in a spreadsheet.
---
--- /See:/ 'clearValuesRequest' smart constructor.
-data ClearValuesRequest =
-  ClearValuesRequest'
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ClearValuesRequest' with the minimum fields required to make a request.
---
-clearValuesRequest
-    :: ClearValuesRequest
-clearValuesRequest = ClearValuesRequest'
-
-
-instance FromJSON ClearValuesRequest where
-        parseJSON
-          = withObject "ClearValuesRequest"
-              (\ o -> pure ClearValuesRequest')
-
-instance ToJSON ClearValuesRequest where
-        toJSON = const emptyObject
-
--- | Finds and replaces data in cells over a range, sheet, or all sheets.
---
--- /See:/ 'findReplaceRequest' smart constructor.
-data FindReplaceRequest =
-  FindReplaceRequest'
-    { _frrMatchCase       :: !(Maybe Bool)
-    , _frrAllSheets       :: !(Maybe Bool)
-    , _frrIncludeFormulas :: !(Maybe Bool)
-    , _frrMatchEntireCell :: !(Maybe Bool)
-    , _frrRange           :: !(Maybe GridRange)
-    , _frrSheetId         :: !(Maybe (Textual Int32))
-    , _frrFind            :: !(Maybe Text)
-    , _frrSearchByRegex   :: !(Maybe Bool)
-    , _frrReplacement     :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FindReplaceRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frrMatchCase'
---
--- * 'frrAllSheets'
---
--- * 'frrIncludeFormulas'
---
--- * 'frrMatchEntireCell'
---
--- * 'frrRange'
---
--- * 'frrSheetId'
---
--- * 'frrFind'
---
--- * 'frrSearchByRegex'
---
--- * 'frrReplacement'
-findReplaceRequest
-    :: FindReplaceRequest
-findReplaceRequest =
-  FindReplaceRequest'
-    { _frrMatchCase = Nothing
-    , _frrAllSheets = Nothing
-    , _frrIncludeFormulas = Nothing
-    , _frrMatchEntireCell = Nothing
-    , _frrRange = Nothing
-    , _frrSheetId = Nothing
-    , _frrFind = Nothing
-    , _frrSearchByRegex = Nothing
-    , _frrReplacement = Nothing
-    }
-
-
--- | True if the search is case sensitive.
-frrMatchCase :: Lens' FindReplaceRequest (Maybe Bool)
-frrMatchCase
-  = lens _frrMatchCase (\ s a -> s{_frrMatchCase = a})
-
--- | True to find\/replace over all sheets.
-frrAllSheets :: Lens' FindReplaceRequest (Maybe Bool)
-frrAllSheets
-  = lens _frrAllSheets (\ s a -> s{_frrAllSheets = a})
-
--- | True if the search should include cells with formulas. False to skip
--- cells with formulas.
-frrIncludeFormulas :: Lens' FindReplaceRequest (Maybe Bool)
-frrIncludeFormulas
-  = lens _frrIncludeFormulas
-      (\ s a -> s{_frrIncludeFormulas = a})
-
--- | True if the find value should match the entire cell.
-frrMatchEntireCell :: Lens' FindReplaceRequest (Maybe Bool)
-frrMatchEntireCell
-  = lens _frrMatchEntireCell
-      (\ s a -> s{_frrMatchEntireCell = a})
-
--- | The range to find\/replace over.
-frrRange :: Lens' FindReplaceRequest (Maybe GridRange)
-frrRange = lens _frrRange (\ s a -> s{_frrRange = a})
-
--- | The sheet to find\/replace over.
-frrSheetId :: Lens' FindReplaceRequest (Maybe Int32)
-frrSheetId
-  = lens _frrSheetId (\ s a -> s{_frrSheetId = a}) .
-      mapping _Coerce
-
--- | The value to search.
-frrFind :: Lens' FindReplaceRequest (Maybe Text)
-frrFind = lens _frrFind (\ s a -> s{_frrFind = a})
-
--- | True if the find value is a regex. The regular expression and
--- replacement should follow Java regex rules at
--- https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/regex\/Pattern.html.
--- The replacement string is allowed to refer to capturing groups. For
--- example, if one cell has the contents \`\"Google Sheets\"\` and another
--- has \`\"Google Docs\"\`, then searching for \`\"o.* (.*)\"\` with a
--- replacement of \`\"$1 Rocks\"\` would change the contents of the cells
--- to \`\"GSheets Rocks\"\` and \`\"GDocs Rocks\"\` respectively.
-frrSearchByRegex :: Lens' FindReplaceRequest (Maybe Bool)
-frrSearchByRegex
-  = lens _frrSearchByRegex
-      (\ s a -> s{_frrSearchByRegex = a})
-
--- | The value to use as the replacement.
-frrReplacement :: Lens' FindReplaceRequest (Maybe Text)
-frrReplacement
-  = lens _frrReplacement
-      (\ s a -> s{_frrReplacement = a})
-
-instance FromJSON FindReplaceRequest where
-        parseJSON
-          = withObject "FindReplaceRequest"
-              (\ o ->
-                 FindReplaceRequest' <$>
-                   (o .:? "matchCase") <*> (o .:? "allSheets") <*>
-                     (o .:? "includeFormulas")
-                     <*> (o .:? "matchEntireCell")
-                     <*> (o .:? "range")
-                     <*> (o .:? "sheetId")
-                     <*> (o .:? "find")
-                     <*> (o .:? "searchByRegex")
-                     <*> (o .:? "replacement"))
-
-instance ToJSON FindReplaceRequest where
-        toJSON FindReplaceRequest'{..}
-          = object
-              (catMaybes
-                 [("matchCase" .=) <$> _frrMatchCase,
-                  ("allSheets" .=) <$> _frrAllSheets,
-                  ("includeFormulas" .=) <$> _frrIncludeFormulas,
-                  ("matchEntireCell" .=) <$> _frrMatchEntireCell,
-                  ("range" .=) <$> _frrRange,
-                  ("sheetId" .=) <$> _frrSheetId,
-                  ("find" .=) <$> _frrFind,
-                  ("searchByRegex" .=) <$> _frrSearchByRegex,
-                  ("replacement" .=) <$> _frrReplacement])
-
--- | Moves one or more rows or columns.
---
--- /See:/ 'moveDimensionRequest' smart constructor.
-data MoveDimensionRequest =
-  MoveDimensionRequest'
-    { _mdrDestinationIndex :: !(Maybe (Textual Int32))
-    , _mdrSource           :: !(Maybe DimensionRange)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MoveDimensionRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mdrDestinationIndex'
---
--- * 'mdrSource'
-moveDimensionRequest
-    :: MoveDimensionRequest
-moveDimensionRequest =
-  MoveDimensionRequest' {_mdrDestinationIndex = Nothing, _mdrSource = Nothing}
-
-
--- | The zero-based start index of where to move the source data to, based on
--- the coordinates *before* the source data is removed from the grid.
--- Existing data will be shifted down or right (depending on the dimension)
--- to make room for the moved dimensions. The source dimensions are removed
--- from the grid, so the the data may end up in a different index than
--- specified. For example, given \`A1..A5\` of \`0, 1, 2, 3, 4\` and
--- wanting to move \`\"1\"\` and \`\"2\"\` to between \`\"3\"\` and
--- \`\"4\"\`, the source would be \`ROWS [1..3)\`,and the destination index
--- would be \`\"4\"\` (the zero-based index of row 5). The end result would
--- be \`A1..A5\` of \`0, 3, 1, 2, 4\`.
-mdrDestinationIndex :: Lens' MoveDimensionRequest (Maybe Int32)
-mdrDestinationIndex
-  = lens _mdrDestinationIndex
-      (\ s a -> s{_mdrDestinationIndex = a})
-      . mapping _Coerce
-
--- | The source dimensions to move.
-mdrSource :: Lens' MoveDimensionRequest (Maybe DimensionRange)
-mdrSource
-  = lens _mdrSource (\ s a -> s{_mdrSource = a})
-
-instance FromJSON MoveDimensionRequest where
-        parseJSON
-          = withObject "MoveDimensionRequest"
-              (\ o ->
-                 MoveDimensionRequest' <$>
-                   (o .:? "destinationIndex") <*> (o .:? "source"))
-
-instance ToJSON MoveDimensionRequest where
-        toJSON MoveDimensionRequest'{..}
-          = object
-              (catMaybes
-                 [("destinationIndex" .=) <$> _mdrDestinationIndex,
-                  ("source" .=) <$> _mdrSource])
-
--- | The request for retrieving a range of values in a spreadsheet selected
--- by a set of DataFilters.
---
--- /See:/ 'batchGetValuesByDataFilterRequest' smart constructor.
-data BatchGetValuesByDataFilterRequest =
-  BatchGetValuesByDataFilterRequest'
-    { _bgvbdfrValueRenderOption    :: !(Maybe BatchGetValuesByDataFilterRequestValueRenderOption)
-    , _bgvbdfrDataFilters          :: !(Maybe [DataFilter])
-    , _bgvbdfrDateTimeRenderOption :: !(Maybe BatchGetValuesByDataFilterRequestDateTimeRenderOption)
-    , _bgvbdfrMajorDimension       :: !(Maybe BatchGetValuesByDataFilterRequestMajorDimension)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchGetValuesByDataFilterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bgvbdfrValueRenderOption'
---
--- * 'bgvbdfrDataFilters'
---
--- * 'bgvbdfrDateTimeRenderOption'
---
--- * 'bgvbdfrMajorDimension'
-batchGetValuesByDataFilterRequest
-    :: BatchGetValuesByDataFilterRequest
-batchGetValuesByDataFilterRequest =
-  BatchGetValuesByDataFilterRequest'
-    { _bgvbdfrValueRenderOption = Nothing
-    , _bgvbdfrDataFilters = Nothing
-    , _bgvbdfrDateTimeRenderOption = Nothing
-    , _bgvbdfrMajorDimension = Nothing
-    }
-
-
--- | How values should be represented in the output. The default render
--- option is ValueRenderOption.FORMATTED_VALUE.
-bgvbdfrValueRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestValueRenderOption)
-bgvbdfrValueRenderOption
-  = lens _bgvbdfrValueRenderOption
-      (\ s a -> s{_bgvbdfrValueRenderOption = a})
-
--- | The data filters used to match the ranges of values to retrieve. Ranges
--- that match any of the specified data filters will be included in the
--- response.
-bgvbdfrDataFilters :: Lens' BatchGetValuesByDataFilterRequest [DataFilter]
-bgvbdfrDataFilters
-  = lens _bgvbdfrDataFilters
-      (\ s a -> s{_bgvbdfrDataFilters = a})
-      . _Default
-      . _Coerce
-
--- | How dates, times, and durations should be represented in the output.
--- This is ignored if value_render_option is FORMATTED_VALUE. The default
--- dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].
-bgvbdfrDateTimeRenderOption :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestDateTimeRenderOption)
-bgvbdfrDateTimeRenderOption
-  = lens _bgvbdfrDateTimeRenderOption
-      (\ s a -> s{_bgvbdfrDateTimeRenderOption = a})
-
--- | The major dimension that results should use. For example, if the
--- spreadsheet data is: \`A1=1,B1=2,A2=3,B2=4\`, then a request that
--- selects that range and sets \`majorDimension=ROWS\` will return
--- \`[[1,2],[3,4]]\`, whereas a request that sets
--- \`majorDimension=COLUMNS\` will return \`[[1,3],[2,4]]\`.
-bgvbdfrMajorDimension :: Lens' BatchGetValuesByDataFilterRequest (Maybe BatchGetValuesByDataFilterRequestMajorDimension)
-bgvbdfrMajorDimension
-  = lens _bgvbdfrMajorDimension
-      (\ s a -> s{_bgvbdfrMajorDimension = a})
-
-instance FromJSON BatchGetValuesByDataFilterRequest
-         where
-        parseJSON
-          = withObject "BatchGetValuesByDataFilterRequest"
-              (\ o ->
-                 BatchGetValuesByDataFilterRequest' <$>
-                   (o .:? "valueRenderOption") <*>
-                     (o .:? "dataFilters" .!= mempty)
-                     <*> (o .:? "dateTimeRenderOption")
-                     <*> (o .:? "majorDimension"))
-
-instance ToJSON BatchGetValuesByDataFilterRequest
-         where
-        toJSON BatchGetValuesByDataFilterRequest'{..}
-          = object
-              (catMaybes
-                 [("valueRenderOption" .=) <$>
-                    _bgvbdfrValueRenderOption,
-                  ("dataFilters" .=) <$> _bgvbdfrDataFilters,
-                  ("dateTimeRenderOption" .=) <$>
-                    _bgvbdfrDateTimeRenderOption,
-                  ("majorDimension" .=) <$> _bgvbdfrMajorDimension])
-
--- | A rule that applies a gradient color scale format, based on the
--- interpolation points listed. The format of a cell will vary based on its
--- contents as compared to the values of the interpolation points.
---
--- /See:/ 'gradientRule' smart constructor.
-data GradientRule =
-  GradientRule'
-    { _grMidpoint :: !(Maybe InterpolationPoint)
-    , _grMaxpoint :: !(Maybe InterpolationPoint)
-    , _grMinpoint :: !(Maybe InterpolationPoint)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GradientRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'grMidpoint'
---
--- * 'grMaxpoint'
---
--- * 'grMinpoint'
-gradientRule
-    :: GradientRule
-gradientRule =
-  GradientRule'
-    {_grMidpoint = Nothing, _grMaxpoint = Nothing, _grMinpoint = Nothing}
-
-
--- | An optional midway interpolation point.
-grMidpoint :: Lens' GradientRule (Maybe InterpolationPoint)
-grMidpoint
-  = lens _grMidpoint (\ s a -> s{_grMidpoint = a})
-
--- | The final interpolation point.
-grMaxpoint :: Lens' GradientRule (Maybe InterpolationPoint)
-grMaxpoint
-  = lens _grMaxpoint (\ s a -> s{_grMaxpoint = a})
-
--- | The starting interpolation point.
-grMinpoint :: Lens' GradientRule (Maybe InterpolationPoint)
-grMinpoint
-  = lens _grMinpoint (\ s a -> s{_grMinpoint = a})
-
-instance FromJSON GradientRule where
-        parseJSON
-          = withObject "GradientRule"
-              (\ o ->
-                 GradientRule' <$>
-                   (o .:? "midpoint") <*> (o .:? "maxpoint") <*>
-                     (o .:? "minpoint"))
-
-instance ToJSON GradientRule where
-        toJSON GradientRule'{..}
-          = object
-              (catMaybes
-                 [("midpoint" .=) <$> _grMidpoint,
-                  ("maxpoint" .=) <$> _grMaxpoint,
-                  ("minpoint" .=) <$> _grMinpoint])
-
--- | Moves data from the source to the destination.
---
--- /See:/ 'cutPasteRequest' smart constructor.
-data CutPasteRequest =
-  CutPasteRequest'
-    { _cDestination :: !(Maybe GridCoordinate)
-    , _cSource      :: !(Maybe GridRange)
-    , _cPasteType   :: !(Maybe CutPasteRequestPasteType)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CutPasteRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cDestination'
---
--- * 'cSource'
---
--- * 'cPasteType'
-cutPasteRequest
-    :: CutPasteRequest
-cutPasteRequest =
-  CutPasteRequest'
-    {_cDestination = Nothing, _cSource = Nothing, _cPasteType = Nothing}
-
-
--- | The top-left coordinate where the data should be pasted.
-cDestination :: Lens' CutPasteRequest (Maybe GridCoordinate)
-cDestination
-  = lens _cDestination (\ s a -> s{_cDestination = a})
-
--- | The source data to cut.
-cSource :: Lens' CutPasteRequest (Maybe GridRange)
-cSource = lens _cSource (\ s a -> s{_cSource = a})
-
--- | What kind of data to paste. All the source data will be cut, regardless
--- of what is pasted.
-cPasteType :: Lens' CutPasteRequest (Maybe CutPasteRequestPasteType)
-cPasteType
-  = lens _cPasteType (\ s a -> s{_cPasteType = a})
-
-instance FromJSON CutPasteRequest where
-        parseJSON
-          = withObject "CutPasteRequest"
-              (\ o ->
-                 CutPasteRequest' <$>
-                   (o .:? "destination") <*> (o .:? "source") <*>
-                     (o .:? "pasteType"))
-
-instance ToJSON CutPasteRequest where
-        toJSON CutPasteRequest'{..}
-          = object
-              (catMaybes
-                 [("destination" .=) <$> _cDestination,
-                  ("source" .=) <$> _cSource,
-                  ("pasteType" .=) <$> _cPasteType])
-
--- | The result of updating an embedded object\'s position.
---
--- /See:/ 'updateEmbeddedObjectPositionResponse' smart constructor.
-newtype UpdateEmbeddedObjectPositionResponse =
-  UpdateEmbeddedObjectPositionResponse'
-    { _ueoprPosition :: Maybe EmbeddedObjectPosition
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateEmbeddedObjectPositionResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ueoprPosition'
-updateEmbeddedObjectPositionResponse
-    :: UpdateEmbeddedObjectPositionResponse
-updateEmbeddedObjectPositionResponse =
-  UpdateEmbeddedObjectPositionResponse' {_ueoprPosition = Nothing}
-
-
--- | The new position of the embedded object.
-ueoprPosition :: Lens' UpdateEmbeddedObjectPositionResponse (Maybe EmbeddedObjectPosition)
-ueoprPosition
-  = lens _ueoprPosition
-      (\ s a -> s{_ueoprPosition = a})
-
-instance FromJSON
-           UpdateEmbeddedObjectPositionResponse
-         where
-        parseJSON
-          = withObject "UpdateEmbeddedObjectPositionResponse"
-              (\ o ->
-                 UpdateEmbeddedObjectPositionResponse' <$>
-                   (o .:? "position"))
-
-instance ToJSON UpdateEmbeddedObjectPositionResponse
-         where
-        toJSON UpdateEmbeddedObjectPositionResponse'{..}
-          = object
-              (catMaybes [("position" .=) <$> _ueoprPosition])
-
--- | A custom subtotal column for a waterfall chart series.
---
--- /See:/ 'waterfallChartCustomSubtotal' smart constructor.
-data WaterfallChartCustomSubtotal =
-  WaterfallChartCustomSubtotal'
-    { _wccsDataIsSubtotal :: !(Maybe Bool)
-    , _wccsSubtotalIndex  :: !(Maybe (Textual Int32))
-    , _wccsLabel          :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'WaterfallChartCustomSubtotal' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wccsDataIsSubtotal'
---
--- * 'wccsSubtotalIndex'
---
--- * 'wccsLabel'
-waterfallChartCustomSubtotal
-    :: WaterfallChartCustomSubtotal
-waterfallChartCustomSubtotal =
-  WaterfallChartCustomSubtotal'
-    { _wccsDataIsSubtotal = Nothing
-    , _wccsSubtotalIndex = Nothing
-    , _wccsLabel = Nothing
-    }
-
-
--- | True if the data point at subtotal_index is the subtotal. If false, the
--- subtotal will be computed and appear after the data point.
-wccsDataIsSubtotal :: Lens' WaterfallChartCustomSubtotal (Maybe Bool)
-wccsDataIsSubtotal
-  = lens _wccsDataIsSubtotal
-      (\ s a -> s{_wccsDataIsSubtotal = a})
-
--- | The 0-based index of a data point within the series. If data_is_subtotal
--- is true, the data point at this index is the subtotal. Otherwise, the
--- subtotal appears after the data point with this index. A series can have
--- multiple subtotals at arbitrary indices, but subtotals do not affect the
--- indices of the data points. For example, if a series has three data
--- points, their indices will always be 0, 1, and 2, regardless of how many
--- subtotals exist on the series or what data points they are associated
--- with.
-wccsSubtotalIndex :: Lens' WaterfallChartCustomSubtotal (Maybe Int32)
-wccsSubtotalIndex
-  = lens _wccsSubtotalIndex
-      (\ s a -> s{_wccsSubtotalIndex = a})
-      . mapping _Coerce
-
--- | A label for the subtotal column.
-wccsLabel :: Lens' WaterfallChartCustomSubtotal (Maybe Text)
-wccsLabel
-  = lens _wccsLabel (\ s a -> s{_wccsLabel = a})
-
-instance FromJSON WaterfallChartCustomSubtotal where
-        parseJSON
-          = withObject "WaterfallChartCustomSubtotal"
-              (\ o ->
-                 WaterfallChartCustomSubtotal' <$>
-                   (o .:? "dataIsSubtotal") <*> (o .:? "subtotalIndex")
-                     <*> (o .:? "label"))
-
-instance ToJSON WaterfallChartCustomSubtotal where
-        toJSON WaterfallChartCustomSubtotal'{..}
-          = object
-              (catMaybes
-                 [("dataIsSubtotal" .=) <$> _wccsDataIsSubtotal,
-                  ("subtotalIndex" .=) <$> _wccsSubtotalIndex,
-                  ("label" .=) <$> _wccsLabel])
-
--- | A single response from an update.
---
--- /See:/ 'response' smart constructor.
-data Response =
-  Response'
-    { _rAddFilterView                :: !(Maybe AddFilterViewResponse)
-    , _rCreateDeveloperMetadata      :: !(Maybe CreateDeveloperMetadataResponse)
-    , _rDuplicateFilterView          :: !(Maybe DuplicateFilterViewResponse)
-    , _rUpdateEmbeddedObjectPosition :: !(Maybe UpdateEmbeddedObjectPositionResponse)
-    , _rDeleteDimensionGroup         :: !(Maybe DeleteDimensionGroupResponse)
-    , _rAddSheet                     :: !(Maybe AddSheetResponse)
-    , _rFindReplace                  :: !(Maybe FindReplaceResponse)
-    , _rAddProtectedRange            :: !(Maybe AddProtectedRangeResponse)
-    , _rDeleteConditionalFormatRule  :: !(Maybe DeleteConditionalFormatRuleResponse)
-    , _rUpdateConditionalFormatRule  :: !(Maybe UpdateConditionalFormatRuleResponse)
-    , _rDeleteDeveloperMetadata      :: !(Maybe DeleteDeveloperMetadataResponse)
-    , _rUpdateDeveloperMetadata      :: !(Maybe UpdateDeveloperMetadataResponse)
-    , _rAddNamedRange                :: !(Maybe AddNamedRangeResponse)
-    , _rAddChart                     :: !(Maybe AddChartResponse)
-    , _rAddBanding                   :: !(Maybe AddBandingResponse)
-    , _rDuplicateSheet               :: !(Maybe DuplicateSheetResponse)
-    , _rAddDimensionGroup            :: !(Maybe AddDimensionGroupResponse)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Response' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rAddFilterView'
---
--- * 'rCreateDeveloperMetadata'
---
--- * 'rDuplicateFilterView'
---
--- * 'rUpdateEmbeddedObjectPosition'
---
--- * 'rDeleteDimensionGroup'
---
--- * 'rAddSheet'
---
--- * 'rFindReplace'
---
--- * 'rAddProtectedRange'
---
--- * 'rDeleteConditionalFormatRule'
---
--- * 'rUpdateConditionalFormatRule'
---
--- * 'rDeleteDeveloperMetadata'
---
--- * 'rUpdateDeveloperMetadata'
---
--- * 'rAddNamedRange'
---
--- * 'rAddChart'
---
--- * 'rAddBanding'
---
--- * 'rDuplicateSheet'
---
--- * 'rAddDimensionGroup'
-response
-    :: Response
-response =
-  Response'
-    { _rAddFilterView = Nothing
-    , _rCreateDeveloperMetadata = Nothing
-    , _rDuplicateFilterView = Nothing
-    , _rUpdateEmbeddedObjectPosition = Nothing
-    , _rDeleteDimensionGroup = Nothing
-    , _rAddSheet = Nothing
-    , _rFindReplace = Nothing
-    , _rAddProtectedRange = Nothing
-    , _rDeleteConditionalFormatRule = Nothing
-    , _rUpdateConditionalFormatRule = Nothing
-    , _rDeleteDeveloperMetadata = Nothing
-    , _rUpdateDeveloperMetadata = Nothing
-    , _rAddNamedRange = Nothing
-    , _rAddChart = Nothing
-    , _rAddBanding = Nothing
-    , _rDuplicateSheet = Nothing
-    , _rAddDimensionGroup = Nothing
-    }
-
-
--- | A reply from adding a filter view.
-rAddFilterView :: Lens' Response (Maybe AddFilterViewResponse)
-rAddFilterView
-  = lens _rAddFilterView
-      (\ s a -> s{_rAddFilterView = a})
-
--- | A reply from creating a developer metadata entry.
-rCreateDeveloperMetadata :: Lens' Response (Maybe CreateDeveloperMetadataResponse)
-rCreateDeveloperMetadata
-  = lens _rCreateDeveloperMetadata
-      (\ s a -> s{_rCreateDeveloperMetadata = a})
-
--- | A reply from duplicating a filter view.
-rDuplicateFilterView :: Lens' Response (Maybe DuplicateFilterViewResponse)
-rDuplicateFilterView
-  = lens _rDuplicateFilterView
-      (\ s a -> s{_rDuplicateFilterView = a})
-
--- | A reply from updating an embedded object\'s position.
-rUpdateEmbeddedObjectPosition :: Lens' Response (Maybe UpdateEmbeddedObjectPositionResponse)
-rUpdateEmbeddedObjectPosition
-  = lens _rUpdateEmbeddedObjectPosition
-      (\ s a -> s{_rUpdateEmbeddedObjectPosition = a})
-
--- | A reply from deleting a dimension group.
-rDeleteDimensionGroup :: Lens' Response (Maybe DeleteDimensionGroupResponse)
-rDeleteDimensionGroup
-  = lens _rDeleteDimensionGroup
-      (\ s a -> s{_rDeleteDimensionGroup = a})
-
--- | A reply from adding a sheet.
-rAddSheet :: Lens' Response (Maybe AddSheetResponse)
-rAddSheet
-  = lens _rAddSheet (\ s a -> s{_rAddSheet = a})
-
--- | A reply from doing a find\/replace.
-rFindReplace :: Lens' Response (Maybe FindReplaceResponse)
-rFindReplace
-  = lens _rFindReplace (\ s a -> s{_rFindReplace = a})
-
--- | A reply from adding a protected range.
-rAddProtectedRange :: Lens' Response (Maybe AddProtectedRangeResponse)
-rAddProtectedRange
-  = lens _rAddProtectedRange
-      (\ s a -> s{_rAddProtectedRange = a})
-
--- | A reply from deleting a conditional format rule.
-rDeleteConditionalFormatRule :: Lens' Response (Maybe DeleteConditionalFormatRuleResponse)
-rDeleteConditionalFormatRule
-  = lens _rDeleteConditionalFormatRule
-      (\ s a -> s{_rDeleteConditionalFormatRule = a})
-
--- | A reply from updating a conditional format rule.
-rUpdateConditionalFormatRule :: Lens' Response (Maybe UpdateConditionalFormatRuleResponse)
-rUpdateConditionalFormatRule
-  = lens _rUpdateConditionalFormatRule
-      (\ s a -> s{_rUpdateConditionalFormatRule = a})
-
--- | A reply from deleting a developer metadata entry.
-rDeleteDeveloperMetadata :: Lens' Response (Maybe DeleteDeveloperMetadataResponse)
-rDeleteDeveloperMetadata
-  = lens _rDeleteDeveloperMetadata
-      (\ s a -> s{_rDeleteDeveloperMetadata = a})
-
--- | A reply from updating a developer metadata entry.
-rUpdateDeveloperMetadata :: Lens' Response (Maybe UpdateDeveloperMetadataResponse)
-rUpdateDeveloperMetadata
-  = lens _rUpdateDeveloperMetadata
-      (\ s a -> s{_rUpdateDeveloperMetadata = a})
-
--- | A reply from adding a named range.
-rAddNamedRange :: Lens' Response (Maybe AddNamedRangeResponse)
-rAddNamedRange
-  = lens _rAddNamedRange
-      (\ s a -> s{_rAddNamedRange = a})
-
--- | A reply from adding a chart.
-rAddChart :: Lens' Response (Maybe AddChartResponse)
-rAddChart
-  = lens _rAddChart (\ s a -> s{_rAddChart = a})
-
--- | A reply from adding a banded range.
-rAddBanding :: Lens' Response (Maybe AddBandingResponse)
-rAddBanding
-  = lens _rAddBanding (\ s a -> s{_rAddBanding = a})
-
--- | A reply from duplicating a sheet.
-rDuplicateSheet :: Lens' Response (Maybe DuplicateSheetResponse)
-rDuplicateSheet
-  = lens _rDuplicateSheet
-      (\ s a -> s{_rDuplicateSheet = a})
-
--- | A reply from adding a dimension group.
-rAddDimensionGroup :: Lens' Response (Maybe AddDimensionGroupResponse)
-rAddDimensionGroup
-  = lens _rAddDimensionGroup
-      (\ s a -> s{_rAddDimensionGroup = a})
-
-instance FromJSON Response where
-        parseJSON
-          = withObject "Response"
-              (\ o ->
-                 Response' <$>
-                   (o .:? "addFilterView") <*>
-                     (o .:? "createDeveloperMetadata")
-                     <*> (o .:? "duplicateFilterView")
-                     <*> (o .:? "updateEmbeddedObjectPosition")
-                     <*> (o .:? "deleteDimensionGroup")
-                     <*> (o .:? "addSheet")
-                     <*> (o .:? "findReplace")
-                     <*> (o .:? "addProtectedRange")
-                     <*> (o .:? "deleteConditionalFormatRule")
-                     <*> (o .:? "updateConditionalFormatRule")
-                     <*> (o .:? "deleteDeveloperMetadata")
-                     <*> (o .:? "updateDeveloperMetadata")
-                     <*> (o .:? "addNamedRange")
-                     <*> (o .:? "addChart")
-                     <*> (o .:? "addBanding")
-                     <*> (o .:? "duplicateSheet")
-                     <*> (o .:? "addDimensionGroup"))
-
-instance ToJSON Response where
-        toJSON Response'{..}
-          = object
-              (catMaybes
-                 [("addFilterView" .=) <$> _rAddFilterView,
-                  ("createDeveloperMetadata" .=) <$>
-                    _rCreateDeveloperMetadata,
-                  ("duplicateFilterView" .=) <$> _rDuplicateFilterView,
-                  ("updateEmbeddedObjectPosition" .=) <$>
-                    _rUpdateEmbeddedObjectPosition,
-                  ("deleteDimensionGroup" .=) <$>
-                    _rDeleteDimensionGroup,
-                  ("addSheet" .=) <$> _rAddSheet,
-                  ("findReplace" .=) <$> _rFindReplace,
-                  ("addProtectedRange" .=) <$> _rAddProtectedRange,
-                  ("deleteConditionalFormatRule" .=) <$>
-                    _rDeleteConditionalFormatRule,
-                  ("updateConditionalFormatRule" .=) <$>
-                    _rUpdateConditionalFormatRule,
-                  ("deleteDeveloperMetadata" .=) <$>
-                    _rDeleteDeveloperMetadata,
-                  ("updateDeveloperMetadata" .=) <$>
-                    _rUpdateDeveloperMetadata,
-                  ("addNamedRange" .=) <$> _rAddNamedRange,
-                  ("addChart" .=) <$> _rAddChart,
-                  ("addBanding" .=) <$> _rAddBanding,
-                  ("duplicateSheet" .=) <$> _rDuplicateSheet,
-                  ("addDimensionGroup" .=) <$> _rAddDimensionGroup])
-
--- | Criteria for showing\/hiding rows in a filter or filter view.
---
--- /See:/ 'filterCriteria' smart constructor.
-data FilterCriteria =
-  FilterCriteria'
-    { _fcHiddenValues :: !(Maybe [Text])
-    , _fcCondition    :: !(Maybe BooleanCondition)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FilterCriteria' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fcHiddenValues'
---
--- * 'fcCondition'
-filterCriteria
-    :: FilterCriteria
-filterCriteria =
-  FilterCriteria' {_fcHiddenValues = Nothing, _fcCondition = Nothing}
-
-
--- | Values that should be hidden.
-fcHiddenValues :: Lens' FilterCriteria [Text]
-fcHiddenValues
-  = lens _fcHiddenValues
-      (\ s a -> s{_fcHiddenValues = a})
-      . _Default
-      . _Coerce
-
--- | A condition that must be true for values to be shown. (This does not
--- override hiddenValues -- if a value is listed there, it will still be
--- hidden.)
-fcCondition :: Lens' FilterCriteria (Maybe BooleanCondition)
-fcCondition
-  = lens _fcCondition (\ s a -> s{_fcCondition = a})
-
-instance FromJSON FilterCriteria where
-        parseJSON
-          = withObject "FilterCriteria"
-              (\ o ->
-                 FilterCriteria' <$>
-                   (o .:? "hiddenValues" .!= mempty) <*>
-                     (o .:? "condition"))
-
-instance ToJSON FilterCriteria where
-        toJSON FilterCriteria'{..}
-          = object
-              (catMaybes
-                 [("hiddenValues" .=) <$> _fcHiddenValues,
-                  ("condition" .=) <$> _fcCondition])
-
--- | An error in a cell.
---
--- /See:/ 'errorValue' smart constructor.
-data ErrorValue =
-  ErrorValue'
-    { _evType    :: !(Maybe ErrorValueType)
-    , _evMessage :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ErrorValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'evType'
---
--- * 'evMessage'
-errorValue
-    :: ErrorValue
-errorValue = ErrorValue' {_evType = Nothing, _evMessage = Nothing}
-
-
--- | The type of error.
-evType :: Lens' ErrorValue (Maybe ErrorValueType)
-evType = lens _evType (\ s a -> s{_evType = a})
-
--- | A message with more information about the error (in the spreadsheet\'s
--- locale).
-evMessage :: Lens' ErrorValue (Maybe Text)
-evMessage
-  = lens _evMessage (\ s a -> s{_evMessage = a})
-
-instance FromJSON ErrorValue where
-        parseJSON
-          = withObject "ErrorValue"
-              (\ o ->
-                 ErrorValue' <$> (o .:? "type") <*> (o .:? "message"))
-
-instance ToJSON ErrorValue where
-        toJSON ErrorValue'{..}
-          = object
-              (catMaybes
-                 [("type" .=) <$> _evType,
-                  ("message" .=) <$> _evMessage])
-
--- | Updates a conditional format rule at the given index, or moves a
--- conditional format rule to another index.
---
--- /See:/ 'updateConditionalFormatRuleRequest' smart constructor.
-data UpdateConditionalFormatRuleRequest =
-  UpdateConditionalFormatRuleRequest'
-    { _ucfrrRule     :: !(Maybe ConditionalFormatRule)
-    , _ucfrrNewIndex :: !(Maybe (Textual Int32))
-    , _ucfrrSheetId  :: !(Maybe (Textual Int32))
-    , _ucfrrIndex    :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConditionalFormatRuleRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucfrrRule'
---
--- * 'ucfrrNewIndex'
---
--- * 'ucfrrSheetId'
---
--- * 'ucfrrIndex'
-updateConditionalFormatRuleRequest
-    :: UpdateConditionalFormatRuleRequest
-updateConditionalFormatRuleRequest =
-  UpdateConditionalFormatRuleRequest'
-    { _ucfrrRule = Nothing
-    , _ucfrrNewIndex = Nothing
-    , _ucfrrSheetId = Nothing
-    , _ucfrrIndex = Nothing
-    }
-
-
--- | The rule that should replace the rule at the given index.
-ucfrrRule :: Lens' UpdateConditionalFormatRuleRequest (Maybe ConditionalFormatRule)
-ucfrrRule
-  = lens _ucfrrRule (\ s a -> s{_ucfrrRule = a})
-
--- | The zero-based new index the rule should end up at.
-ucfrrNewIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)
-ucfrrNewIndex
-  = lens _ucfrrNewIndex
-      (\ s a -> s{_ucfrrNewIndex = a})
-      . mapping _Coerce
-
--- | The sheet of the rule to move. Required if new_index is set, unused
--- otherwise.
-ucfrrSheetId :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)
-ucfrrSheetId
-  = lens _ucfrrSheetId (\ s a -> s{_ucfrrSheetId = a})
-      . mapping _Coerce
-
--- | The zero-based index of the rule that should be replaced or moved.
-ucfrrIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)
-ucfrrIndex
-  = lens _ucfrrIndex (\ s a -> s{_ucfrrIndex = a}) .
-      mapping _Coerce
-
-instance FromJSON UpdateConditionalFormatRuleRequest
-         where
-        parseJSON
-          = withObject "UpdateConditionalFormatRuleRequest"
-              (\ o ->
-                 UpdateConditionalFormatRuleRequest' <$>
-                   (o .:? "rule") <*> (o .:? "newIndex") <*>
-                     (o .:? "sheetId")
-                     <*> (o .:? "index"))
-
-instance ToJSON UpdateConditionalFormatRuleRequest
-         where
-        toJSON UpdateConditionalFormatRuleRequest'{..}
-          = object
-              (catMaybes
-                 [("rule" .=) <$> _ucfrrRule,
-                  ("newIndex" .=) <$> _ucfrrNewIndex,
-                  ("sheetId" .=) <$> _ucfrrSheetId,
-                  ("index" .=) <$> _ucfrrIndex])
-
--- | Deletes a conditional format rule at the given index. All subsequent
--- rules\' indexes are decremented.
---
--- /See:/ 'deleteConditionalFormatRuleRequest' smart constructor.
-data DeleteConditionalFormatRuleRequest =
-  DeleteConditionalFormatRuleRequest'
-    { _dcfrrSheetId :: !(Maybe (Textual Int32))
-    , _dcfrrIndex   :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteConditionalFormatRuleRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcfrrSheetId'
---
--- * 'dcfrrIndex'
-deleteConditionalFormatRuleRequest
-    :: DeleteConditionalFormatRuleRequest
-deleteConditionalFormatRuleRequest =
-  DeleteConditionalFormatRuleRequest'
-    {_dcfrrSheetId = Nothing, _dcfrrIndex = Nothing}
-
-
--- | The sheet the rule is being deleted from.
-dcfrrSheetId :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)
-dcfrrSheetId
-  = lens _dcfrrSheetId (\ s a -> s{_dcfrrSheetId = a})
-      . mapping _Coerce
-
--- | The zero-based index of the rule to be deleted.
-dcfrrIndex :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)
-dcfrrIndex
-  = lens _dcfrrIndex (\ s a -> s{_dcfrrIndex = a}) .
-      mapping _Coerce
-
-instance FromJSON DeleteConditionalFormatRuleRequest
-         where
-        parseJSON
-          = withObject "DeleteConditionalFormatRuleRequest"
-              (\ o ->
-                 DeleteConditionalFormatRuleRequest' <$>
-                   (o .:? "sheetId") <*> (o .:? "index"))
-
-instance ToJSON DeleteConditionalFormatRuleRequest
-         where
-        toJSON DeleteConditionalFormatRuleRequest'{..}
-          = object
-              (catMaybes
-                 [("sheetId" .=) <$> _dcfrrSheetId,
-                  ("index" .=) <$> _dcfrrIndex])
-
--- | A request to update properties of developer metadata. Updates the
--- properties of the developer metadata selected by the filters to the
--- values provided in the DeveloperMetadata resource. Callers must specify
--- the properties they wish to update in the fields parameter, as well as
--- specify at least one DataFilter matching the metadata they wish to
--- update.
---
--- /See:/ 'updateDeveloperMetadataRequest' smart constructor.
-data UpdateDeveloperMetadataRequest =
-  UpdateDeveloperMetadataRequest'
-    { _udmrDataFilters       :: !(Maybe [DataFilter])
-    , _udmrDeveloperMetadata :: !(Maybe DeveloperMetadata)
-    , _udmrFields            :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateDeveloperMetadataRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udmrDataFilters'
---
--- * 'udmrDeveloperMetadata'
---
--- * 'udmrFields'
-updateDeveloperMetadataRequest
-    :: UpdateDeveloperMetadataRequest
-updateDeveloperMetadataRequest =
-  UpdateDeveloperMetadataRequest'
-    { _udmrDataFilters = Nothing
-    , _udmrDeveloperMetadata = Nothing
-    , _udmrFields = Nothing
-    }
-
-
--- | The filters matching the developer metadata entries to update.
-udmrDataFilters :: Lens' UpdateDeveloperMetadataRequest [DataFilter]
-udmrDataFilters
-  = lens _udmrDataFilters
-      (\ s a -> s{_udmrDataFilters = a})
-      . _Default
-      . _Coerce
-
--- | The value that all metadata matched by the data filters will be updated
--- to.
-udmrDeveloperMetadata :: Lens' UpdateDeveloperMetadataRequest (Maybe DeveloperMetadata)
-udmrDeveloperMetadata
-  = lens _udmrDeveloperMetadata
-      (\ s a -> s{_udmrDeveloperMetadata = a})
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \`developerMetadata\` is implied and should not be specified. A
--- single \`\"*\"\` can be used as short-hand for listing every field.
-udmrFields :: Lens' UpdateDeveloperMetadataRequest (Maybe GFieldMask)
-udmrFields
-  = lens _udmrFields (\ s a -> s{_udmrFields = a})
-
-instance FromJSON UpdateDeveloperMetadataRequest
-         where
-        parseJSON
-          = withObject "UpdateDeveloperMetadataRequest"
-              (\ o ->
-                 UpdateDeveloperMetadataRequest' <$>
-                   (o .:? "dataFilters" .!= mempty) <*>
-                     (o .:? "developerMetadata")
-                     <*> (o .:? "fields"))
-
-instance ToJSON UpdateDeveloperMetadataRequest where
-        toJSON UpdateDeveloperMetadataRequest'{..}
-          = object
-              (catMaybes
-                 [("dataFilters" .=) <$> _udmrDataFilters,
-                  ("developerMetadata" .=) <$> _udmrDeveloperMetadata,
-                  ("fields" .=) <$> _udmrFields])
-
--- | A request to delete developer metadata.
---
--- /See:/ 'deleteDeveloperMetadataRequest' smart constructor.
-newtype DeleteDeveloperMetadataRequest =
-  DeleteDeveloperMetadataRequest'
-    { _ddmrDataFilter :: Maybe DataFilter
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteDeveloperMetadataRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddmrDataFilter'
-deleteDeveloperMetadataRequest
-    :: DeleteDeveloperMetadataRequest
-deleteDeveloperMetadataRequest =
-  DeleteDeveloperMetadataRequest' {_ddmrDataFilter = Nothing}
-
-
--- | The data filter describing the criteria used to select which developer
--- metadata entry to delete.
-ddmrDataFilter :: Lens' DeleteDeveloperMetadataRequest (Maybe DataFilter)
-ddmrDataFilter
-  = lens _ddmrDataFilter
-      (\ s a -> s{_ddmrDataFilter = a})
-
-instance FromJSON DeleteDeveloperMetadataRequest
-         where
-        parseJSON
-          = withObject "DeleteDeveloperMetadataRequest"
-              (\ o ->
-                 DeleteDeveloperMetadataRequest' <$>
-                   (o .:? "dataFilter"))
-
-instance ToJSON DeleteDeveloperMetadataRequest where
-        toJSON DeleteDeveloperMetadataRequest'{..}
-          = object
-              (catMaybes [("dataFilter" .=) <$> _ddmrDataFilter])
-
--- | A waterfall chart.
---
--- /See:/ 'waterfallChartSpec' smart constructor.
-data WaterfallChartSpec =
-  WaterfallChartSpec'
-    { _wcsStackedType        :: !(Maybe WaterfallChartSpecStackedType)
-    , _wcsConnectorLineStyle :: !(Maybe LineStyle)
-    , _wcsDomain             :: !(Maybe WaterfallChartDomain)
-    , _wcsSeries             :: !(Maybe [WaterfallChartSeries])
-    , _wcsHideConnectorLines :: !(Maybe Bool)
-    , _wcsFirstValueIsTotal  :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'WaterfallChartSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wcsStackedType'
---
--- * 'wcsConnectorLineStyle'
---
--- * 'wcsDomain'
---
--- * 'wcsSeries'
---
--- * 'wcsHideConnectorLines'
---
--- * 'wcsFirstValueIsTotal'
-waterfallChartSpec
-    :: WaterfallChartSpec
-waterfallChartSpec =
-  WaterfallChartSpec'
-    { _wcsStackedType = Nothing
-    , _wcsConnectorLineStyle = Nothing
-    , _wcsDomain = Nothing
-    , _wcsSeries = Nothing
-    , _wcsHideConnectorLines = Nothing
-    , _wcsFirstValueIsTotal = Nothing
-    }
-
-
--- | The stacked type.
-wcsStackedType :: Lens' WaterfallChartSpec (Maybe WaterfallChartSpecStackedType)
-wcsStackedType
-  = lens _wcsStackedType
-      (\ s a -> s{_wcsStackedType = a})
-
--- | The line style for the connector lines.
-wcsConnectorLineStyle :: Lens' WaterfallChartSpec (Maybe LineStyle)
-wcsConnectorLineStyle
-  = lens _wcsConnectorLineStyle
-      (\ s a -> s{_wcsConnectorLineStyle = a})
-
--- | The domain data (horizontal axis) for the waterfall chart.
-wcsDomain :: Lens' WaterfallChartSpec (Maybe WaterfallChartDomain)
-wcsDomain
-  = lens _wcsDomain (\ s a -> s{_wcsDomain = a})
-
--- | The data this waterfall chart is visualizing.
-wcsSeries :: Lens' WaterfallChartSpec [WaterfallChartSeries]
-wcsSeries
-  = lens _wcsSeries (\ s a -> s{_wcsSeries = a}) .
-      _Default
-      . _Coerce
-
--- | True to hide connector lines between columns.
-wcsHideConnectorLines :: Lens' WaterfallChartSpec (Maybe Bool)
-wcsHideConnectorLines
-  = lens _wcsHideConnectorLines
-      (\ s a -> s{_wcsHideConnectorLines = a})
-
--- | True to interpret the first value as a total.
-wcsFirstValueIsTotal :: Lens' WaterfallChartSpec (Maybe Bool)
-wcsFirstValueIsTotal
-  = lens _wcsFirstValueIsTotal
-      (\ s a -> s{_wcsFirstValueIsTotal = a})
-
-instance FromJSON WaterfallChartSpec where
-        parseJSON
-          = withObject "WaterfallChartSpec"
-              (\ o ->
-                 WaterfallChartSpec' <$>
-                   (o .:? "stackedType") <*>
-                     (o .:? "connectorLineStyle")
-                     <*> (o .:? "domain")
-                     <*> (o .:? "series" .!= mempty)
-                     <*> (o .:? "hideConnectorLines")
-                     <*> (o .:? "firstValueIsTotal"))
-
-instance ToJSON WaterfallChartSpec where
-        toJSON WaterfallChartSpec'{..}
-          = object
-              (catMaybes
-                 [("stackedType" .=) <$> _wcsStackedType,
-                  ("connectorLineStyle" .=) <$> _wcsConnectorLineStyle,
-                  ("domain" .=) <$> _wcsDomain,
-                  ("series" .=) <$> _wcsSeries,
-                  ("hideConnectorLines" .=) <$> _wcsHideConnectorLines,
-                  ("firstValueIsTotal" .=) <$> _wcsFirstValueIsTotal])
-
--- | The location an object is overlaid on top of a grid.
---
--- /See:/ 'overlayPosition' smart constructor.
-data OverlayPosition =
-  OverlayPosition'
-    { _opHeightPixels  :: !(Maybe (Textual Int32))
-    , _opOffSetYPixels :: !(Maybe (Textual Int32))
-    , _opAnchorCell    :: !(Maybe GridCoordinate)
-    , _opWidthPixels   :: !(Maybe (Textual Int32))
-    , _opOffSetXPixels :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OverlayPosition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'opHeightPixels'
---
--- * 'opOffSetYPixels'
---
--- * 'opAnchorCell'
---
--- * 'opWidthPixels'
---
--- * 'opOffSetXPixels'
-overlayPosition
-    :: OverlayPosition
-overlayPosition =
-  OverlayPosition'
-    { _opHeightPixels = Nothing
-    , _opOffSetYPixels = Nothing
-    , _opAnchorCell = Nothing
-    , _opWidthPixels = Nothing
-    , _opOffSetXPixels = Nothing
-    }
-
-
--- | The height of the object, in pixels. Defaults to 371.
-opHeightPixels :: Lens' OverlayPosition (Maybe Int32)
-opHeightPixels
-  = lens _opHeightPixels
-      (\ s a -> s{_opHeightPixels = a})
-      . mapping _Coerce
-
--- | The vertical offset, in pixels, that the object is offset from the
--- anchor cell.
-opOffSetYPixels :: Lens' OverlayPosition (Maybe Int32)
-opOffSetYPixels
-  = lens _opOffSetYPixels
-      (\ s a -> s{_opOffSetYPixels = a})
-      . mapping _Coerce
-
--- | The cell the object is anchored to.
-opAnchorCell :: Lens' OverlayPosition (Maybe GridCoordinate)
-opAnchorCell
-  = lens _opAnchorCell (\ s a -> s{_opAnchorCell = a})
-
--- | The width of the object, in pixels. Defaults to 600.
-opWidthPixels :: Lens' OverlayPosition (Maybe Int32)
-opWidthPixels
-  = lens _opWidthPixels
-      (\ s a -> s{_opWidthPixels = a})
-      . mapping _Coerce
-
--- | The horizontal offset, in pixels, that the object is offset from the
--- anchor cell.
-opOffSetXPixels :: Lens' OverlayPosition (Maybe Int32)
-opOffSetXPixels
-  = lens _opOffSetXPixels
-      (\ s a -> s{_opOffSetXPixels = a})
-      . mapping _Coerce
-
-instance FromJSON OverlayPosition where
-        parseJSON
-          = withObject "OverlayPosition"
-              (\ o ->
-                 OverlayPosition' <$>
-                   (o .:? "heightPixels") <*> (o .:? "offsetYPixels")
-                     <*> (o .:? "anchorCell")
-                     <*> (o .:? "widthPixels")
-                     <*> (o .:? "offsetXPixels"))
-
-instance ToJSON OverlayPosition where
-        toJSON OverlayPosition'{..}
-          = object
-              (catMaybes
-                 [("heightPixels" .=) <$> _opHeightPixels,
-                  ("offsetYPixels" .=) <$> _opOffSetYPixels,
-                  ("anchorCell" .=) <$> _opAnchorCell,
-                  ("widthPixels" .=) <$> _opWidthPixels,
-                  ("offsetXPixels" .=) <$> _opOffSetXPixels])
-
--- | Deletes the embedded object with the given ID.
---
--- /See:/ 'deleteEmbeddedObjectRequest' smart constructor.
-newtype DeleteEmbeddedObjectRequest =
-  DeleteEmbeddedObjectRequest'
-    { _deorObjectId :: Maybe (Textual Int32)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteEmbeddedObjectRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'deorObjectId'
-deleteEmbeddedObjectRequest
-    :: DeleteEmbeddedObjectRequest
-deleteEmbeddedObjectRequest =
-  DeleteEmbeddedObjectRequest' {_deorObjectId = Nothing}
-
-
--- | The ID of the embedded object to delete.
-deorObjectId :: Lens' DeleteEmbeddedObjectRequest (Maybe Int32)
-deorObjectId
-  = lens _deorObjectId (\ s a -> s{_deorObjectId = a})
-      . mapping _Coerce
-
-instance FromJSON DeleteEmbeddedObjectRequest where
-        parseJSON
-          = withObject "DeleteEmbeddedObjectRequest"
-              (\ o ->
-                 DeleteEmbeddedObjectRequest' <$> (o .:? "objectId"))
-
-instance ToJSON DeleteEmbeddedObjectRequest where
-        toJSON DeleteEmbeddedObjectRequest'{..}
-          = object
-              (catMaybes [("objectId" .=) <$> _deorObjectId])
-
--- | A location where metadata may be associated in a spreadsheet.
---
--- /See:/ 'developerMetadataLocation' smart constructor.
-data DeveloperMetadataLocation =
-  DeveloperMetadataLocation'
-    { _dmlSpreadsheet    :: !(Maybe Bool)
-    , _dmlDimensionRange :: !(Maybe DimensionRange)
-    , _dmlSheetId        :: !(Maybe (Textual Int32))
-    , _dmlLocationType   :: !(Maybe DeveloperMetadataLocationLocationType)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeveloperMetadataLocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmlSpreadsheet'
---
--- * 'dmlDimensionRange'
---
--- * 'dmlSheetId'
---
--- * 'dmlLocationType'
-developerMetadataLocation
-    :: DeveloperMetadataLocation
-developerMetadataLocation =
-  DeveloperMetadataLocation'
-    { _dmlSpreadsheet = Nothing
-    , _dmlDimensionRange = Nothing
-    , _dmlSheetId = Nothing
-    , _dmlLocationType = Nothing
-    }
-
-
--- | True when metadata is associated with an entire spreadsheet.
-dmlSpreadsheet :: Lens' DeveloperMetadataLocation (Maybe Bool)
-dmlSpreadsheet
-  = lens _dmlSpreadsheet
-      (\ s a -> s{_dmlSpreadsheet = a})
-
--- | Represents the row or column when metadata is associated with a
--- dimension. The specified DimensionRange must represent a single row or
--- column; it cannot be unbounded or span multiple rows or columns.
-dmlDimensionRange :: Lens' DeveloperMetadataLocation (Maybe DimensionRange)
-dmlDimensionRange
-  = lens _dmlDimensionRange
-      (\ s a -> s{_dmlDimensionRange = a})
-
--- | The ID of the sheet when metadata is associated with an entire sheet.
-dmlSheetId :: Lens' DeveloperMetadataLocation (Maybe Int32)
-dmlSheetId
-  = lens _dmlSheetId (\ s a -> s{_dmlSheetId = a}) .
-      mapping _Coerce
-
--- | The type of location this object represents. This field is read-only.
-dmlLocationType :: Lens' DeveloperMetadataLocation (Maybe DeveloperMetadataLocationLocationType)
-dmlLocationType
-  = lens _dmlLocationType
-      (\ s a -> s{_dmlLocationType = a})
-
-instance FromJSON DeveloperMetadataLocation where
-        parseJSON
-          = withObject "DeveloperMetadataLocation"
-              (\ o ->
-                 DeveloperMetadataLocation' <$>
-                   (o .:? "spreadsheet") <*> (o .:? "dimensionRange")
-                     <*> (o .:? "sheetId")
-                     <*> (o .:? "locationType"))
-
-instance ToJSON DeveloperMetadataLocation where
-        toJSON DeveloperMetadataLocation'{..}
-          = object
-              (catMaybes
-                 [("spreadsheet" .=) <$> _dmlSpreadsheet,
-                  ("dimensionRange" .=) <$> _dmlDimensionRange,
-                  ("sheetId" .=) <$> _dmlSheetId,
-                  ("locationType" .=) <$> _dmlLocationType])
-
--- | Properties of a sheet.
---
--- /See:/ 'sheetProperties' smart constructor.
-data SheetProperties =
-  SheetProperties'
-    { _sTabColor       :: !(Maybe Color)
-    , _sGridProperties :: !(Maybe GridProperties)
-    , _sSheetType      :: !(Maybe SheetPropertiesSheetType)
-    , _sHidden         :: !(Maybe Bool)
-    , _sSheetId        :: !(Maybe (Textual Int32))
-    , _sTitle          :: !(Maybe Text)
-    , _sRightToLeft    :: !(Maybe Bool)
-    , _sIndex          :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SheetProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sTabColor'
---
--- * 'sGridProperties'
---
--- * 'sSheetType'
---
--- * 'sHidden'
---
--- * 'sSheetId'
---
--- * 'sTitle'
---
--- * 'sRightToLeft'
---
--- * 'sIndex'
-sheetProperties
-    :: SheetProperties
-sheetProperties =
-  SheetProperties'
-    { _sTabColor = Nothing
-    , _sGridProperties = Nothing
-    , _sSheetType = Nothing
-    , _sHidden = Nothing
-    , _sSheetId = Nothing
-    , _sTitle = Nothing
-    , _sRightToLeft = Nothing
-    , _sIndex = Nothing
-    }
-
-
--- | The color of the tab in the UI.
-sTabColor :: Lens' SheetProperties (Maybe Color)
-sTabColor
-  = lens _sTabColor (\ s a -> s{_sTabColor = a})
-
--- | Additional properties of the sheet if this sheet is a grid. (If the
--- sheet is an object sheet, containing a chart or image, then this field
--- will be absent.) When writing it is an error to set any grid properties
--- on non-grid sheets.
-sGridProperties :: Lens' SheetProperties (Maybe GridProperties)
-sGridProperties
-  = lens _sGridProperties
-      (\ s a -> s{_sGridProperties = a})
-
--- | The type of sheet. Defaults to GRID. This field cannot be changed once
--- set.
-sSheetType :: Lens' SheetProperties (Maybe SheetPropertiesSheetType)
-sSheetType
-  = lens _sSheetType (\ s a -> s{_sSheetType = a})
-
--- | True if the sheet is hidden in the UI, false if it\'s visible.
-sHidden :: Lens' SheetProperties (Maybe Bool)
-sHidden = lens _sHidden (\ s a -> s{_sHidden = a})
-
--- | The ID of the sheet. Must be non-negative. This field cannot be changed
--- once set.
-sSheetId :: Lens' SheetProperties (Maybe Int32)
-sSheetId
-  = lens _sSheetId (\ s a -> s{_sSheetId = a}) .
-      mapping _Coerce
-
--- | The name of the sheet.
-sTitle :: Lens' SheetProperties (Maybe Text)
-sTitle = lens _sTitle (\ s a -> s{_sTitle = a})
-
--- | True if the sheet is an RTL sheet instead of an LTR sheet.
-sRightToLeft :: Lens' SheetProperties (Maybe Bool)
-sRightToLeft
-  = lens _sRightToLeft (\ s a -> s{_sRightToLeft = a})
-
--- | The index of the sheet within the spreadsheet. When adding or updating
--- sheet properties, if this field is excluded then the sheet is added or
--- moved to the end of the sheet list. When updating sheet indices or
--- inserting sheets, movement is considered in \"before the move\" indexes.
--- For example, if there were 3 sheets (S1, S2, S3) in order to move S1
--- ahead of S2 the index would have to be set to 2. A sheet index update
--- request is ignored if the requested index is identical to the sheets
--- current index or if the requested new index is equal to the current
--- sheet index + 1.
-sIndex :: Lens' SheetProperties (Maybe Int32)
-sIndex
-  = lens _sIndex (\ s a -> s{_sIndex = a}) .
-      mapping _Coerce
-
-instance FromJSON SheetProperties where
-        parseJSON
-          = withObject "SheetProperties"
-              (\ o ->
-                 SheetProperties' <$>
-                   (o .:? "tabColor") <*> (o .:? "gridProperties") <*>
-                     (o .:? "sheetType")
-                     <*> (o .:? "hidden")
-                     <*> (o .:? "sheetId")
-                     <*> (o .:? "title")
-                     <*> (o .:? "rightToLeft")
-                     <*> (o .:? "index"))
-
-instance ToJSON SheetProperties where
-        toJSON SheetProperties'{..}
-          = object
-              (catMaybes
-                 [("tabColor" .=) <$> _sTabColor,
-                  ("gridProperties" .=) <$> _sGridProperties,
-                  ("sheetType" .=) <$> _sSheetType,
-                  ("hidden" .=) <$> _sHidden,
-                  ("sheetId" .=) <$> _sSheetId,
-                  ("title" .=) <$> _sTitle,
-                  ("rightToLeft" .=) <$> _sRightToLeft,
-                  ("index" .=) <$> _sIndex])
-
--- | The criteria for showing\/hiding values per column. The map\'s key is
--- the column index, and the value is the criteria for that column.
---
--- /See:/ 'filterViewCriteria' smart constructor.
-newtype FilterViewCriteria =
-  FilterViewCriteria'
-    { _fvcAddtional :: HashMap Text FilterCriteria
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FilterViewCriteria' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fvcAddtional'
-filterViewCriteria
-    :: HashMap Text FilterCriteria -- ^ 'fvcAddtional'
-    -> FilterViewCriteria
-filterViewCriteria pFvcAddtional_ =
-  FilterViewCriteria' {_fvcAddtional = _Coerce # pFvcAddtional_}
-
-
-fvcAddtional :: Lens' FilterViewCriteria (HashMap Text FilterCriteria)
-fvcAddtional
-  = lens _fvcAddtional (\ s a -> s{_fvcAddtional = a})
-      . _Coerce
-
-instance FromJSON FilterViewCriteria where
-        parseJSON
-          = withObject "FilterViewCriteria"
-              (\ o -> FilterViewCriteria' <$> (parseJSONObject o))
-
-instance ToJSON FilterViewCriteria where
-        toJSON = toJSON . _fvcAddtional
-
--- | The response when updating a range of values in a spreadsheet.
---
--- /See:/ 'batchUpdateValuesResponse' smart constructor.
-data BatchUpdateValuesResponse =
-  BatchUpdateValuesResponse'
-    { _buvrTotalUpdatedColumns :: !(Maybe (Textual Int32))
-    , _buvrResponses           :: !(Maybe [UpdateValuesResponse])
-    , _buvrSpreadsheetId       :: !(Maybe Text)
-    , _buvrTotalUpdatedSheets  :: !(Maybe (Textual Int32))
-    , _buvrTotalUpdatedCells   :: !(Maybe (Textual Int32))
-    , _buvrTotalUpdatedRows    :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchUpdateValuesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'buvrTotalUpdatedColumns'
---
--- * 'buvrResponses'
---
--- * 'buvrSpreadsheetId'
---
--- * 'buvrTotalUpdatedSheets'
---
--- * 'buvrTotalUpdatedCells'
---
--- * 'buvrTotalUpdatedRows'
-batchUpdateValuesResponse
-    :: BatchUpdateValuesResponse
-batchUpdateValuesResponse =
-  BatchUpdateValuesResponse'
-    { _buvrTotalUpdatedColumns = Nothing
-    , _buvrResponses = Nothing
-    , _buvrSpreadsheetId = Nothing
-    , _buvrTotalUpdatedSheets = Nothing
-    , _buvrTotalUpdatedCells = Nothing
-    , _buvrTotalUpdatedRows = Nothing
-    }
-
-
--- | The total number of columns where at least one cell in the column was
--- updated.
-buvrTotalUpdatedColumns :: Lens' BatchUpdateValuesResponse (Maybe Int32)
-buvrTotalUpdatedColumns
-  = lens _buvrTotalUpdatedColumns
-      (\ s a -> s{_buvrTotalUpdatedColumns = a})
-      . mapping _Coerce
-
--- | One UpdateValuesResponse per requested range, in the same order as the
--- requests appeared.
-buvrResponses :: Lens' BatchUpdateValuesResponse [UpdateValuesResponse]
-buvrResponses
-  = lens _buvrResponses
-      (\ s a -> s{_buvrResponses = a})
-      . _Default
-      . _Coerce
-
--- | The spreadsheet the updates were applied to.
-buvrSpreadsheetId :: Lens' BatchUpdateValuesResponse (Maybe Text)
-buvrSpreadsheetId
-  = lens _buvrSpreadsheetId
-      (\ s a -> s{_buvrSpreadsheetId = a})
-
--- | The total number of sheets where at least one cell in the sheet was
--- updated.
-buvrTotalUpdatedSheets :: Lens' BatchUpdateValuesResponse (Maybe Int32)
-buvrTotalUpdatedSheets
-  = lens _buvrTotalUpdatedSheets
-      (\ s a -> s{_buvrTotalUpdatedSheets = a})
-      . mapping _Coerce
-
--- | The total number of cells updated.
-buvrTotalUpdatedCells :: Lens' BatchUpdateValuesResponse (Maybe Int32)
-buvrTotalUpdatedCells
-  = lens _buvrTotalUpdatedCells
-      (\ s a -> s{_buvrTotalUpdatedCells = a})
-      . mapping _Coerce
-
--- | The total number of rows where at least one cell in the row was updated.
-buvrTotalUpdatedRows :: Lens' BatchUpdateValuesResponse (Maybe Int32)
-buvrTotalUpdatedRows
-  = lens _buvrTotalUpdatedRows
-      (\ s a -> s{_buvrTotalUpdatedRows = a})
-      . mapping _Coerce
-
-instance FromJSON BatchUpdateValuesResponse where
-        parseJSON
-          = withObject "BatchUpdateValuesResponse"
-              (\ o ->
-                 BatchUpdateValuesResponse' <$>
-                   (o .:? "totalUpdatedColumns") <*>
-                     (o .:? "responses" .!= mempty)
-                     <*> (o .:? "spreadsheetId")
-                     <*> (o .:? "totalUpdatedSheets")
-                     <*> (o .:? "totalUpdatedCells")
-                     <*> (o .:? "totalUpdatedRows"))
-
-instance ToJSON BatchUpdateValuesResponse where
-        toJSON BatchUpdateValuesResponse'{..}
-          = object
-              (catMaybes
-                 [("totalUpdatedColumns" .=) <$>
-                    _buvrTotalUpdatedColumns,
-                  ("responses" .=) <$> _buvrResponses,
-                  ("spreadsheetId" .=) <$> _buvrSpreadsheetId,
-                  ("totalUpdatedSheets" .=) <$>
-                    _buvrTotalUpdatedSheets,
-                  ("totalUpdatedCells" .=) <$> _buvrTotalUpdatedCells,
-                  ("totalUpdatedRows" .=) <$> _buvrTotalUpdatedRows])
-
--- | Updates properties of the sheet with the specified sheetId.
---
--- /See:/ 'updateSheetPropertiesRequest' smart constructor.
-data UpdateSheetPropertiesRequest =
-  UpdateSheetPropertiesRequest'
-    { _usprFields     :: !(Maybe GFieldMask)
-    , _usprProperties :: !(Maybe SheetProperties)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateSheetPropertiesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'usprFields'
---
--- * 'usprProperties'
-updateSheetPropertiesRequest
-    :: UpdateSheetPropertiesRequest
-updateSheetPropertiesRequest =
-  UpdateSheetPropertiesRequest'
-    {_usprFields = Nothing, _usprProperties = Nothing}
-
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \`properties\` is implied and should not be specified. A single
--- \`\"*\"\` can be used as short-hand for listing every field.
-usprFields :: Lens' UpdateSheetPropertiesRequest (Maybe GFieldMask)
-usprFields
-  = lens _usprFields (\ s a -> s{_usprFields = a})
-
--- | The properties to update.
-usprProperties :: Lens' UpdateSheetPropertiesRequest (Maybe SheetProperties)
-usprProperties
-  = lens _usprProperties
-      (\ s a -> s{_usprProperties = a})
-
-instance FromJSON UpdateSheetPropertiesRequest where
-        parseJSON
-          = withObject "UpdateSheetPropertiesRequest"
-              (\ o ->
-                 UpdateSheetPropertiesRequest' <$>
-                   (o .:? "fields") <*> (o .:? "properties"))
-
-instance ToJSON UpdateSheetPropertiesRequest where
-        toJSON UpdateSheetPropertiesRequest'{..}
-          = object
-              (catMaybes
-                 [("fields" .=) <$> _usprFields,
-                  ("properties" .=) <$> _usprProperties])
-
--- | Resource that represents a spreadsheet.
---
--- /See:/ 'spreadsheet' smart constructor.
-data Spreadsheet =
-  Spreadsheet'
-    { _sprSheets            :: !(Maybe [Sheet])
-    , _sprNamedRanges       :: !(Maybe [NamedRange])
-    , _sprSpreadsheetId     :: !(Maybe Text)
-    , _sprSpreadsheetURL    :: !(Maybe Text)
-    , _sprDeveloperMetadata :: !(Maybe [DeveloperMetadata])
-    , _sprProperties        :: !(Maybe SpreadsheetProperties)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Spreadsheet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sprSheets'
---
--- * 'sprNamedRanges'
---
--- * 'sprSpreadsheetId'
---
--- * 'sprSpreadsheetURL'
---
--- * 'sprDeveloperMetadata'
---
--- * 'sprProperties'
-spreadsheet
-    :: Spreadsheet
-spreadsheet =
-  Spreadsheet'
-    { _sprSheets = Nothing
-    , _sprNamedRanges = Nothing
-    , _sprSpreadsheetId = Nothing
-    , _sprSpreadsheetURL = Nothing
-    , _sprDeveloperMetadata = Nothing
-    , _sprProperties = Nothing
-    }
-
-
--- | The sheets that are part of a spreadsheet.
-sprSheets :: Lens' Spreadsheet [Sheet]
-sprSheets
-  = lens _sprSheets (\ s a -> s{_sprSheets = a}) .
-      _Default
-      . _Coerce
-
--- | The named ranges defined in a spreadsheet.
-sprNamedRanges :: Lens' Spreadsheet [NamedRange]
-sprNamedRanges
-  = lens _sprNamedRanges
-      (\ s a -> s{_sprNamedRanges = a})
-      . _Default
-      . _Coerce
-
--- | The ID of the spreadsheet. This field is read-only.
-sprSpreadsheetId :: Lens' Spreadsheet (Maybe Text)
-sprSpreadsheetId
-  = lens _sprSpreadsheetId
-      (\ s a -> s{_sprSpreadsheetId = a})
-
--- | The url of the spreadsheet. This field is read-only.
-sprSpreadsheetURL :: Lens' Spreadsheet (Maybe Text)
-sprSpreadsheetURL
-  = lens _sprSpreadsheetURL
-      (\ s a -> s{_sprSpreadsheetURL = a})
-
--- | The developer metadata associated with a spreadsheet.
-sprDeveloperMetadata :: Lens' Spreadsheet [DeveloperMetadata]
-sprDeveloperMetadata
-  = lens _sprDeveloperMetadata
-      (\ s a -> s{_sprDeveloperMetadata = a})
-      . _Default
-      . _Coerce
-
--- | Overall properties of a spreadsheet.
-sprProperties :: Lens' Spreadsheet (Maybe SpreadsheetProperties)
-sprProperties
-  = lens _sprProperties
-      (\ s a -> s{_sprProperties = a})
-
-instance FromJSON Spreadsheet where
-        parseJSON
-          = withObject "Spreadsheet"
-              (\ o ->
-                 Spreadsheet' <$>
-                   (o .:? "sheets" .!= mempty) <*>
-                     (o .:? "namedRanges" .!= mempty)
-                     <*> (o .:? "spreadsheetId")
-                     <*> (o .:? "spreadsheetUrl")
-                     <*> (o .:? "developerMetadata" .!= mempty)
-                     <*> (o .:? "properties"))
-
-instance ToJSON Spreadsheet where
-        toJSON Spreadsheet'{..}
-          = object
-              (catMaybes
-                 [("sheets" .=) <$> _sprSheets,
-                  ("namedRanges" .=) <$> _sprNamedRanges,
-                  ("spreadsheetId" .=) <$> _sprSpreadsheetId,
-                  ("spreadsheetUrl" .=) <$> _sprSpreadsheetURL,
-                  ("developerMetadata" .=) <$> _sprDeveloperMetadata,
-                  ("properties" .=) <$> _sprProperties])
-
--- | A </chart/interactive/docs/gallery/candlestickchart candlestick chart>.
---
--- /See:/ 'candlestickChartSpec' smart constructor.
-data CandlestickChartSpec =
-  CandlestickChartSpec'
-    { _ccsData   :: !(Maybe [CandlestickData])
-    , _ccsDomain :: !(Maybe CandlestickDomain)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CandlestickChartSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccsData'
---
--- * 'ccsDomain'
-candlestickChartSpec
-    :: CandlestickChartSpec
-candlestickChartSpec =
-  CandlestickChartSpec' {_ccsData = Nothing, _ccsDomain = Nothing}
-
-
--- | The Candlestick chart data. Only one CandlestickData is supported.
-ccsData :: Lens' CandlestickChartSpec [CandlestickData]
-ccsData
-  = lens _ccsData (\ s a -> s{_ccsData = a}) . _Default
-      . _Coerce
-
--- | The domain data (horizontal axis) for the candlestick chart. String data
--- will be treated as discrete labels, other data will be treated as
--- continuous values.
-ccsDomain :: Lens' CandlestickChartSpec (Maybe CandlestickDomain)
-ccsDomain
-  = lens _ccsDomain (\ s a -> s{_ccsDomain = a})
-
-instance FromJSON CandlestickChartSpec where
-        parseJSON
-          = withObject "CandlestickChartSpec"
-              (\ o ->
-                 CandlestickChartSpec' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "domain"))
-
-instance ToJSON CandlestickChartSpec where
-        toJSON CandlestickChartSpec'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _ccsData,
-                  ("domain" .=) <$> _ccsDomain])
-
--- | Inserts rows or columns in a sheet at a particular index.
---
--- /See:/ 'insertDimensionRequest' smart constructor.
-data InsertDimensionRequest =
-  InsertDimensionRequest'
-    { _idrRange             :: !(Maybe DimensionRange)
-    , _idrInheritFromBefore :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InsertDimensionRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'idrRange'
---
--- * 'idrInheritFromBefore'
-insertDimensionRequest
-    :: InsertDimensionRequest
-insertDimensionRequest =
-  InsertDimensionRequest' {_idrRange = Nothing, _idrInheritFromBefore = Nothing}
-
-
--- | The dimensions to insert. Both the start and end indexes must be
--- bounded.
-idrRange :: Lens' InsertDimensionRequest (Maybe DimensionRange)
-idrRange = lens _idrRange (\ s a -> s{_idrRange = a})
-
--- | Whether dimension properties should be extended from the dimensions
--- before or after the newly inserted dimensions. True to inherit from the
--- dimensions before (in which case the start index must be greater than
--- 0), and false to inherit from the dimensions after. For example, if row
--- index 0 has red background and row index 1 has a green background, then
--- inserting 2 rows at index 1 can inherit either the green or red
--- background. If \`inheritFromBefore\` is true, the two new rows will be
--- red (because the row before the insertion point was red), whereas if
--- \`inheritFromBefore\` is false, the two new rows will be green (because
--- the row after the insertion point was green).
-idrInheritFromBefore :: Lens' InsertDimensionRequest (Maybe Bool)
-idrInheritFromBefore
-  = lens _idrInheritFromBefore
-      (\ s a -> s{_idrInheritFromBefore = a})
-
-instance FromJSON InsertDimensionRequest where
-        parseJSON
-          = withObject "InsertDimensionRequest"
-              (\ o ->
-                 InsertDimensionRequest' <$>
-                   (o .:? "range") <*> (o .:? "inheritFromBefore"))
-
-instance ToJSON InsertDimensionRequest where
-        toJSON InsertDimensionRequest'{..}
-          = object
-              (catMaybes
-                 [("range" .=) <$> _idrRange,
-                  ("inheritFromBefore" .=) <$> _idrInheritFromBefore])
-
--- | A reply to a developer metadata search request.
---
--- /See:/ 'searchDeveloperMetadataResponse' smart constructor.
-newtype SearchDeveloperMetadataResponse =
-  SearchDeveloperMetadataResponse'
-    { _sdmrMatchedDeveloperMetadata :: Maybe [MatchedDeveloperMetadata]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SearchDeveloperMetadataResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdmrMatchedDeveloperMetadata'
-searchDeveloperMetadataResponse
-    :: SearchDeveloperMetadataResponse
-searchDeveloperMetadataResponse =
-  SearchDeveloperMetadataResponse' {_sdmrMatchedDeveloperMetadata = Nothing}
-
-
--- | The metadata matching the criteria of the search request.
-sdmrMatchedDeveloperMetadata :: Lens' SearchDeveloperMetadataResponse [MatchedDeveloperMetadata]
-sdmrMatchedDeveloperMetadata
-  = lens _sdmrMatchedDeveloperMetadata
-      (\ s a -> s{_sdmrMatchedDeveloperMetadata = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON SearchDeveloperMetadataResponse
-         where
-        parseJSON
-          = withObject "SearchDeveloperMetadataResponse"
-              (\ o ->
-                 SearchDeveloperMetadataResponse' <$>
-                   (o .:? "matchedDeveloperMetadata" .!= mempty))
-
-instance ToJSON SearchDeveloperMetadataResponse where
-        toJSON SearchDeveloperMetadataResponse'{..}
-          = object
-              (catMaybes
-                 [("matchedDeveloperMetadata" .=) <$>
-                    _sdmrMatchedDeveloperMetadata])
-
--- | A single interpolation point on a gradient conditional format. These pin
--- the gradient color scale according to the color, type and value chosen.
---
--- /See:/ 'interpolationPoint' smart constructor.
-data InterpolationPoint =
-  InterpolationPoint'
-    { _ipColor :: !(Maybe Color)
-    , _ipValue :: !(Maybe Text)
-    , _ipType  :: !(Maybe InterpolationPointType)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InterpolationPoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipColor'
---
--- * 'ipValue'
---
--- * 'ipType'
-interpolationPoint
-    :: InterpolationPoint
-interpolationPoint =
-  InterpolationPoint'
-    {_ipColor = Nothing, _ipValue = Nothing, _ipType = Nothing}
-
-
--- | The color this interpolation point should use.
-ipColor :: Lens' InterpolationPoint (Maybe Color)
-ipColor = lens _ipColor (\ s a -> s{_ipColor = a})
-
--- | The value this interpolation point uses. May be a formula. Unused if
--- type is MIN or MAX.
-ipValue :: Lens' InterpolationPoint (Maybe Text)
-ipValue = lens _ipValue (\ s a -> s{_ipValue = a})
-
--- | How the value should be interpreted.
-ipType :: Lens' InterpolationPoint (Maybe InterpolationPointType)
-ipType = lens _ipType (\ s a -> s{_ipType = a})
-
-instance FromJSON InterpolationPoint where
-        parseJSON
-          = withObject "InterpolationPoint"
-              (\ o ->
-                 InterpolationPoint' <$>
-                   (o .:? "color") <*> (o .:? "value") <*>
-                     (o .:? "type"))
-
-instance ToJSON InterpolationPoint where
-        toJSON InterpolationPoint'{..}
-          = object
-              (catMaybes
-                 [("color" .=) <$> _ipColor,
-                  ("value" .=) <$> _ipValue, ("type" .=) <$> _ipType])
-
--- | Data about a specific cell.
---
--- /See:/ 'cellData' smart constructor.
-data CellData =
-  CellData'
-    { _cdTextFormatRuns    :: !(Maybe [TextFormatRun])
-    , _cdNote              :: !(Maybe Text)
-    , _cdUserEnteredValue  :: !(Maybe ExtendedValue)
-    , _cdUserEnteredFormat :: !(Maybe CellFormat)
-    , _cdEffectiveFormat   :: !(Maybe CellFormat)
-    , _cdPivotTable        :: !(Maybe PivotTable)
-    , _cdFormattedValue    :: !(Maybe Text)
-    , _cdDataValidation    :: !(Maybe DataValidationRule)
-    , _cdHyperlink         :: !(Maybe Text)
-    , _cdEffectiveValue    :: !(Maybe ExtendedValue)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CellData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdTextFormatRuns'
---
--- * 'cdNote'
---
--- * 'cdUserEnteredValue'
---
--- * 'cdUserEnteredFormat'
---
--- * 'cdEffectiveFormat'
---
--- * 'cdPivotTable'
---
--- * 'cdFormattedValue'
---
--- * 'cdDataValidation'
---
--- * 'cdHyperlink'
---
--- * 'cdEffectiveValue'
-cellData
-    :: CellData
-cellData =
-  CellData'
-    { _cdTextFormatRuns = Nothing
-    , _cdNote = Nothing
-    , _cdUserEnteredValue = Nothing
-    , _cdUserEnteredFormat = Nothing
-    , _cdEffectiveFormat = Nothing
-    , _cdPivotTable = Nothing
-    , _cdFormattedValue = Nothing
-    , _cdDataValidation = Nothing
-    , _cdHyperlink = Nothing
-    , _cdEffectiveValue = Nothing
-    }
-
-
--- | Runs of rich text applied to subsections of the cell. Runs are only
--- valid on user entered strings, not formulas, bools, or numbers. Runs
--- start at specific indexes in the text and continue until the next run.
--- Properties of a run will continue unless explicitly changed in a
--- subsequent run (and properties of the first run will continue the
--- properties of the cell unless explicitly changed). When writing, the new
--- runs will overwrite any prior runs. When writing a new
--- user_entered_value, previous runs are erased.
-cdTextFormatRuns :: Lens' CellData [TextFormatRun]
-cdTextFormatRuns
-  = lens _cdTextFormatRuns
-      (\ s a -> s{_cdTextFormatRuns = a})
-      . _Default
-      . _Coerce
-
--- | Any note on the cell.
-cdNote :: Lens' CellData (Maybe Text)
-cdNote = lens _cdNote (\ s a -> s{_cdNote = a})
-
--- | The value the user entered in the cell. e.g, \`1234\`, \`\'Hello\'\`, or
--- \`=NOW()\` Note: Dates, Times and DateTimes are represented as doubles
--- in serial number format.
-cdUserEnteredValue :: Lens' CellData (Maybe ExtendedValue)
-cdUserEnteredValue
-  = lens _cdUserEnteredValue
-      (\ s a -> s{_cdUserEnteredValue = a})
-
--- | The format the user entered for the cell. When writing, the new format
--- will be merged with the existing format.
-cdUserEnteredFormat :: Lens' CellData (Maybe CellFormat)
-cdUserEnteredFormat
-  = lens _cdUserEnteredFormat
-      (\ s a -> s{_cdUserEnteredFormat = a})
-
--- | The effective format being used by the cell. This includes the results
--- of applying any conditional formatting and, if the cell contains a
--- formula, the computed number format. If the effective format is the
--- default format, effective format will not be written. This field is
--- read-only.
-cdEffectiveFormat :: Lens' CellData (Maybe CellFormat)
-cdEffectiveFormat
-  = lens _cdEffectiveFormat
-      (\ s a -> s{_cdEffectiveFormat = a})
-
--- | A pivot table anchored at this cell. The size of pivot table itself is
--- computed dynamically based on its data, grouping, filters, values, etc.
--- Only the top-left cell of the pivot table contains the pivot table
--- definition. The other cells will contain the calculated values of the
--- results of the pivot in their effective_value fields.
-cdPivotTable :: Lens' CellData (Maybe PivotTable)
-cdPivotTable
-  = lens _cdPivotTable (\ s a -> s{_cdPivotTable = a})
-
--- | The formatted value of the cell. This is the value as it\'s shown to the
--- user. This field is read-only.
-cdFormattedValue :: Lens' CellData (Maybe Text)
-cdFormattedValue
-  = lens _cdFormattedValue
-      (\ s a -> s{_cdFormattedValue = a})
-
--- | A data validation rule on the cell, if any. When writing, the new data
--- validation rule will overwrite any prior rule.
-cdDataValidation :: Lens' CellData (Maybe DataValidationRule)
-cdDataValidation
-  = lens _cdDataValidation
-      (\ s a -> s{_cdDataValidation = a})
-
--- | A hyperlink this cell points to, if any. This field is read-only. (To
--- set it, use a \`=HYPERLINK\` formula in the
--- userEnteredValue.formulaValue field.)
-cdHyperlink :: Lens' CellData (Maybe Text)
-cdHyperlink
-  = lens _cdHyperlink (\ s a -> s{_cdHyperlink = a})
-
--- | The effective value of the cell. For cells with formulas, this is the
--- calculated value. For cells with literals, this is the same as the
--- user_entered_value. This field is read-only.
-cdEffectiveValue :: Lens' CellData (Maybe ExtendedValue)
-cdEffectiveValue
-  = lens _cdEffectiveValue
-      (\ s a -> s{_cdEffectiveValue = a})
-
-instance FromJSON CellData where
-        parseJSON
-          = withObject "CellData"
-              (\ o ->
-                 CellData' <$>
-                   (o .:? "textFormatRuns" .!= mempty) <*>
-                     (o .:? "note")
-                     <*> (o .:? "userEnteredValue")
-                     <*> (o .:? "userEnteredFormat")
-                     <*> (o .:? "effectiveFormat")
-                     <*> (o .:? "pivotTable")
-                     <*> (o .:? "formattedValue")
-                     <*> (o .:? "dataValidation")
-                     <*> (o .:? "hyperlink")
-                     <*> (o .:? "effectiveValue"))
-
-instance ToJSON CellData where
-        toJSON CellData'{..}
-          = object
-              (catMaybes
-                 [("textFormatRuns" .=) <$> _cdTextFormatRuns,
-                  ("note" .=) <$> _cdNote,
-                  ("userEnteredValue" .=) <$> _cdUserEnteredValue,
-                  ("userEnteredFormat" .=) <$> _cdUserEnteredFormat,
-                  ("effectiveFormat" .=) <$> _cdEffectiveFormat,
-                  ("pivotTable" .=) <$> _cdPivotTable,
-                  ("formattedValue" .=) <$> _cdFormattedValue,
-                  ("dataValidation" .=) <$> _cdDataValidation,
-                  ("hyperlink" .=) <$> _cdHyperlink,
-                  ("effectiveValue" .=) <$> _cdEffectiveValue])
-
--- | Source ranges for a chart.
---
--- /See:/ 'chartSourceRange' smart constructor.
-newtype ChartSourceRange =
-  ChartSourceRange'
-    { _csrSources :: Maybe [GridRange]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ChartSourceRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csrSources'
-chartSourceRange
-    :: ChartSourceRange
-chartSourceRange = ChartSourceRange' {_csrSources = Nothing}
-
-
--- | The ranges of data for a series or domain. Exactly one dimension must
--- have a length of 1, and all sources in the list must have the same
--- dimension with length 1. The domain (if it exists) & all series must
--- have the same number of source ranges. If using more than one source
--- range, then the source range at a given offset must be in order and
--- contiguous across the domain and series. For example, these are valid
--- configurations: domain sources: A1:A5 series1 sources: B1:B5 series2
--- sources: D6:D10 domain sources: A1:A5, C10:C12 series1 sources: B1:B5,
--- D10:D12 series2 sources: C1:C5, E10:E12
-csrSources :: Lens' ChartSourceRange [GridRange]
-csrSources
-  = lens _csrSources (\ s a -> s{_csrSources = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ChartSourceRange where
-        parseJSON
-          = withObject "ChartSourceRange"
-              (\ o ->
-                 ChartSourceRange' <$> (o .:? "sources" .!= mempty))
-
-instance ToJSON ChartSourceRange where
-        toJSON ChartSourceRange'{..}
-          = object (catMaybes [("sources" .=) <$> _csrSources])
-
--- | The result of adding a named range.
---
--- /See:/ 'addNamedRangeResponse' smart constructor.
-newtype AddNamedRangeResponse =
-  AddNamedRangeResponse'
-    { _anrrNamedRange :: Maybe NamedRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddNamedRangeResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'anrrNamedRange'
-addNamedRangeResponse
-    :: AddNamedRangeResponse
-addNamedRangeResponse = AddNamedRangeResponse' {_anrrNamedRange = Nothing}
-
-
--- | The named range to add.
-anrrNamedRange :: Lens' AddNamedRangeResponse (Maybe NamedRange)
-anrrNamedRange
-  = lens _anrrNamedRange
-      (\ s a -> s{_anrrNamedRange = a})
-
-instance FromJSON AddNamedRangeResponse where
-        parseJSON
-          = withObject "AddNamedRangeResponse"
-              (\ o ->
-                 AddNamedRangeResponse' <$> (o .:? "namedRange"))
-
-instance ToJSON AddNamedRangeResponse where
-        toJSON AddNamedRangeResponse'{..}
-          = object
-              (catMaybes [("namedRange" .=) <$> _anrrNamedRange])
-
--- | The domain of a waterfall chart.
---
--- /See:/ 'waterfallChartDomain' smart constructor.
-data WaterfallChartDomain =
-  WaterfallChartDomain'
-    { _wcdReversed :: !(Maybe Bool)
-    , _wcdData     :: !(Maybe ChartData)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'WaterfallChartDomain' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wcdReversed'
---
--- * 'wcdData'
-waterfallChartDomain
-    :: WaterfallChartDomain
-waterfallChartDomain =
-  WaterfallChartDomain' {_wcdReversed = Nothing, _wcdData = Nothing}
-
-
--- | True to reverse the order of the domain values (horizontal axis).
-wcdReversed :: Lens' WaterfallChartDomain (Maybe Bool)
-wcdReversed
-  = lens _wcdReversed (\ s a -> s{_wcdReversed = a})
-
--- | The data of the WaterfallChartDomain.
-wcdData :: Lens' WaterfallChartDomain (Maybe ChartData)
-wcdData = lens _wcdData (\ s a -> s{_wcdData = a})
-
-instance FromJSON WaterfallChartDomain where
-        parseJSON
-          = withObject "WaterfallChartDomain"
-              (\ o ->
-                 WaterfallChartDomain' <$>
-                   (o .:? "reversed") <*> (o .:? "data"))
-
-instance ToJSON WaterfallChartDomain where
-        toJSON WaterfallChartDomain'{..}
-          = object
-              (catMaybes
-                 [("reversed" .=) <$> _wcdReversed,
-                  ("data" .=) <$> _wcdData])
-
--- | The result of adding a chart to a spreadsheet.
---
--- /See:/ 'addChartResponse' smart constructor.
-newtype AddChartResponse =
-  AddChartResponse'
-    { _acrChart :: Maybe EmbeddedChart
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddChartResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acrChart'
-addChartResponse
-    :: AddChartResponse
-addChartResponse = AddChartResponse' {_acrChart = Nothing}
-
-
--- | The newly added chart.
-acrChart :: Lens' AddChartResponse (Maybe EmbeddedChart)
-acrChart = lens _acrChart (\ s a -> s{_acrChart = a})
-
-instance FromJSON AddChartResponse where
-        parseJSON
-          = withObject "AddChartResponse"
-              (\ o -> AddChartResponse' <$> (o .:? "chart"))
-
-instance ToJSON AddChartResponse where
-        toJSON AddChartResponse'{..}
-          = object (catMaybes [("chart" .=) <$> _acrChart])
-
--- | Updates a chart\'s specifications. (This does not move or resize a
--- chart. To move or resize a chart, use
--- UpdateEmbeddedObjectPositionRequest.)
---
--- /See:/ 'updateChartSpecRequest' smart constructor.
-data UpdateChartSpecRequest =
-  UpdateChartSpecRequest'
-    { _ucsrSpec    :: !(Maybe ChartSpec)
-    , _ucsrChartId :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateChartSpecRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucsrSpec'
---
--- * 'ucsrChartId'
-updateChartSpecRequest
-    :: UpdateChartSpecRequest
-updateChartSpecRequest =
-  UpdateChartSpecRequest' {_ucsrSpec = Nothing, _ucsrChartId = Nothing}
-
-
--- | The specification to apply to the chart.
-ucsrSpec :: Lens' UpdateChartSpecRequest (Maybe ChartSpec)
-ucsrSpec = lens _ucsrSpec (\ s a -> s{_ucsrSpec = a})
-
--- | The ID of the chart to update.
-ucsrChartId :: Lens' UpdateChartSpecRequest (Maybe Int32)
-ucsrChartId
-  = lens _ucsrChartId (\ s a -> s{_ucsrChartId = a}) .
-      mapping _Coerce
-
-instance FromJSON UpdateChartSpecRequest where
-        parseJSON
-          = withObject "UpdateChartSpecRequest"
-              (\ o ->
-                 UpdateChartSpecRequest' <$>
-                   (o .:? "spec") <*> (o .:? "chartId"))
-
-instance ToJSON UpdateChartSpecRequest where
-        toJSON UpdateChartSpecRequest'{..}
-          = object
-              (catMaybes
-                 [("spec" .=) <$> _ucsrSpec,
-                  ("chartId" .=) <$> _ucsrChartId])
-
--- | Sets the basic filter associated with a sheet.
---
--- /See:/ 'setBasicFilterRequest' smart constructor.
-newtype SetBasicFilterRequest =
-  SetBasicFilterRequest'
-    { _sbfrFilter :: Maybe BasicFilter
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetBasicFilterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sbfrFilter'
-setBasicFilterRequest
-    :: SetBasicFilterRequest
-setBasicFilterRequest = SetBasicFilterRequest' {_sbfrFilter = Nothing}
-
-
--- | The filter to set.
-sbfrFilter :: Lens' SetBasicFilterRequest (Maybe BasicFilter)
-sbfrFilter
-  = lens _sbfrFilter (\ s a -> s{_sbfrFilter = a})
-
-instance FromJSON SetBasicFilterRequest where
-        parseJSON
-          = withObject "SetBasicFilterRequest"
-              (\ o -> SetBasicFilterRequest' <$> (o .:? "filter"))
-
-instance ToJSON SetBasicFilterRequest where
-        toJSON SetBasicFilterRequest'{..}
-          = object (catMaybes [("filter" .=) <$> _sbfrFilter])
-
--- | Settings to control how circular dependencies are resolved with
--- iterative calculation.
---
--- /See:/ 'iterativeCalculationSettings' smart constructor.
-data IterativeCalculationSettings =
-  IterativeCalculationSettings'
-    { _icsMaxIterations        :: !(Maybe (Textual Int32))
-    , _icsConvergenceThreshold :: !(Maybe (Textual Double))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'IterativeCalculationSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'icsMaxIterations'
---
--- * 'icsConvergenceThreshold'
-iterativeCalculationSettings
-    :: IterativeCalculationSettings
-iterativeCalculationSettings =
-  IterativeCalculationSettings'
-    {_icsMaxIterations = Nothing, _icsConvergenceThreshold = Nothing}
-
-
--- | When iterative calculation is enabled, the maximum number of calculation
--- rounds to perform.
-icsMaxIterations :: Lens' IterativeCalculationSettings (Maybe Int32)
-icsMaxIterations
-  = lens _icsMaxIterations
-      (\ s a -> s{_icsMaxIterations = a})
-      . mapping _Coerce
-
--- | When iterative calculation is enabled and successive results differ by
--- less than this threshold value, the calculation rounds stop.
-icsConvergenceThreshold :: Lens' IterativeCalculationSettings (Maybe Double)
-icsConvergenceThreshold
-  = lens _icsConvergenceThreshold
-      (\ s a -> s{_icsConvergenceThreshold = a})
-      . mapping _Coerce
-
-instance FromJSON IterativeCalculationSettings where
-        parseJSON
-          = withObject "IterativeCalculationSettings"
-              (\ o ->
-                 IterativeCalculationSettings' <$>
-                   (o .:? "maxIterations") <*>
-                     (o .:? "convergenceThreshold"))
-
-instance ToJSON IterativeCalculationSettings where
-        toJSON IterativeCalculationSettings'{..}
-          = object
-              (catMaybes
-                 [("maxIterations" .=) <$> _icsMaxIterations,
-                  ("convergenceThreshold" .=) <$>
-                    _icsConvergenceThreshold])
-
--- | The response when updating a range of values by a data filter in a
--- spreadsheet.
---
--- /See:/ 'updateValuesByDataFilterResponse' smart constructor.
-data UpdateValuesByDataFilterResponse =
-  UpdateValuesByDataFilterResponse'
-    { _uvbdfrUpdatedCells   :: !(Maybe (Textual Int32))
-    , _uvbdfrUpdatedRows    :: !(Maybe (Textual Int32))
-    , _uvbdfrUpdatedRange   :: !(Maybe Text)
-    , _uvbdfrUpdatedData    :: !(Maybe ValueRange)
-    , _uvbdfrUpdatedColumns :: !(Maybe (Textual Int32))
-    , _uvbdfrDataFilter     :: !(Maybe DataFilter)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateValuesByDataFilterResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uvbdfrUpdatedCells'
---
--- * 'uvbdfrUpdatedRows'
---
--- * 'uvbdfrUpdatedRange'
---
--- * 'uvbdfrUpdatedData'
---
--- * 'uvbdfrUpdatedColumns'
---
--- * 'uvbdfrDataFilter'
-updateValuesByDataFilterResponse
-    :: UpdateValuesByDataFilterResponse
-updateValuesByDataFilterResponse =
-  UpdateValuesByDataFilterResponse'
-    { _uvbdfrUpdatedCells = Nothing
-    , _uvbdfrUpdatedRows = Nothing
-    , _uvbdfrUpdatedRange = Nothing
-    , _uvbdfrUpdatedData = Nothing
-    , _uvbdfrUpdatedColumns = Nothing
-    , _uvbdfrDataFilter = Nothing
-    }
-
-
--- | The number of cells updated.
-uvbdfrUpdatedCells :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)
-uvbdfrUpdatedCells
-  = lens _uvbdfrUpdatedCells
-      (\ s a -> s{_uvbdfrUpdatedCells = a})
-      . mapping _Coerce
-
--- | The number of rows where at least one cell in the row was updated.
-uvbdfrUpdatedRows :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)
-uvbdfrUpdatedRows
-  = lens _uvbdfrUpdatedRows
-      (\ s a -> s{_uvbdfrUpdatedRows = a})
-      . mapping _Coerce
-
--- | The range (in A1 notation) that updates were applied to.
-uvbdfrUpdatedRange :: Lens' UpdateValuesByDataFilterResponse (Maybe Text)
-uvbdfrUpdatedRange
-  = lens _uvbdfrUpdatedRange
-      (\ s a -> s{_uvbdfrUpdatedRange = a})
-
--- | The values of the cells in the range matched by the dataFilter after all
--- updates were applied. This is only included if the request\'s
--- \`includeValuesInResponse\` field was \`true\`.
-uvbdfrUpdatedData :: Lens' UpdateValuesByDataFilterResponse (Maybe ValueRange)
-uvbdfrUpdatedData
-  = lens _uvbdfrUpdatedData
-      (\ s a -> s{_uvbdfrUpdatedData = a})
-
--- | The number of columns where at least one cell in the column was updated.
-uvbdfrUpdatedColumns :: Lens' UpdateValuesByDataFilterResponse (Maybe Int32)
-uvbdfrUpdatedColumns
-  = lens _uvbdfrUpdatedColumns
-      (\ s a -> s{_uvbdfrUpdatedColumns = a})
-      . mapping _Coerce
-
--- | The data filter that selected the range that was updated.
-uvbdfrDataFilter :: Lens' UpdateValuesByDataFilterResponse (Maybe DataFilter)
-uvbdfrDataFilter
-  = lens _uvbdfrDataFilter
-      (\ s a -> s{_uvbdfrDataFilter = a})
-
-instance FromJSON UpdateValuesByDataFilterResponse
-         where
-        parseJSON
-          = withObject "UpdateValuesByDataFilterResponse"
-              (\ o ->
-                 UpdateValuesByDataFilterResponse' <$>
-                   (o .:? "updatedCells") <*> (o .:? "updatedRows") <*>
-                     (o .:? "updatedRange")
-                     <*> (o .:? "updatedData")
-                     <*> (o .:? "updatedColumns")
-                     <*> (o .:? "dataFilter"))
-
-instance ToJSON UpdateValuesByDataFilterResponse
-         where
-        toJSON UpdateValuesByDataFilterResponse'{..}
-          = object
-              (catMaybes
-                 [("updatedCells" .=) <$> _uvbdfrUpdatedCells,
-                  ("updatedRows" .=) <$> _uvbdfrUpdatedRows,
-                  ("updatedRange" .=) <$> _uvbdfrUpdatedRange,
-                  ("updatedData" .=) <$> _uvbdfrUpdatedData,
-                  ("updatedColumns" .=) <$> _uvbdfrUpdatedColumns,
-                  ("dataFilter" .=) <$> _uvbdfrDataFilter])
-
--- | Properties of a grid.
---
--- /See:/ 'gridProperties' smart constructor.
-data GridProperties =
-  GridProperties'
-    { _gpFrozenColumnCount       :: !(Maybe (Textual Int32))
-    , _gpColumnCount             :: !(Maybe (Textual Int32))
-    , _gpColumnGroupControlAfter :: !(Maybe Bool)
-    , _gpHideGridlines           :: !(Maybe Bool)
-    , _gpFrozenRowCount          :: !(Maybe (Textual Int32))
-    , _gpRowGroupControlAfter    :: !(Maybe Bool)
-    , _gpRowCount                :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GridProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gpFrozenColumnCount'
---
--- * 'gpColumnCount'
---
--- * 'gpColumnGroupControlAfter'
---
--- * 'gpHideGridlines'
---
--- * 'gpFrozenRowCount'
---
--- * 'gpRowGroupControlAfter'
---
--- * 'gpRowCount'
-gridProperties
-    :: GridProperties
-gridProperties =
-  GridProperties'
-    { _gpFrozenColumnCount = Nothing
-    , _gpColumnCount = Nothing
-    , _gpColumnGroupControlAfter = Nothing
-    , _gpHideGridlines = Nothing
-    , _gpFrozenRowCount = Nothing
-    , _gpRowGroupControlAfter = Nothing
-    , _gpRowCount = Nothing
-    }
-
-
--- | The number of columns that are frozen in the grid.
-gpFrozenColumnCount :: Lens' GridProperties (Maybe Int32)
-gpFrozenColumnCount
-  = lens _gpFrozenColumnCount
-      (\ s a -> s{_gpFrozenColumnCount = a})
-      . mapping _Coerce
-
--- | The number of columns in the grid.
-gpColumnCount :: Lens' GridProperties (Maybe Int32)
-gpColumnCount
-  = lens _gpColumnCount
-      (\ s a -> s{_gpColumnCount = a})
-      . mapping _Coerce
-
--- | True if the column grouping control toggle is shown after the group.
-gpColumnGroupControlAfter :: Lens' GridProperties (Maybe Bool)
-gpColumnGroupControlAfter
-  = lens _gpColumnGroupControlAfter
-      (\ s a -> s{_gpColumnGroupControlAfter = a})
-
--- | True if the grid isn\'t showing gridlines in the UI.
-gpHideGridlines :: Lens' GridProperties (Maybe Bool)
-gpHideGridlines
-  = lens _gpHideGridlines
-      (\ s a -> s{_gpHideGridlines = a})
-
--- | The number of rows that are frozen in the grid.
-gpFrozenRowCount :: Lens' GridProperties (Maybe Int32)
-gpFrozenRowCount
-  = lens _gpFrozenRowCount
-      (\ s a -> s{_gpFrozenRowCount = a})
-      . mapping _Coerce
-
--- | True if the row grouping control toggle is shown after the group.
-gpRowGroupControlAfter :: Lens' GridProperties (Maybe Bool)
-gpRowGroupControlAfter
-  = lens _gpRowGroupControlAfter
-      (\ s a -> s{_gpRowGroupControlAfter = a})
-
--- | The number of rows in the grid.
-gpRowCount :: Lens' GridProperties (Maybe Int32)
-gpRowCount
-  = lens _gpRowCount (\ s a -> s{_gpRowCount = a}) .
-      mapping _Coerce
-
-instance FromJSON GridProperties where
-        parseJSON
-          = withObject "GridProperties"
-              (\ o ->
-                 GridProperties' <$>
-                   (o .:? "frozenColumnCount") <*> (o .:? "columnCount")
-                     <*> (o .:? "columnGroupControlAfter")
-                     <*> (o .:? "hideGridlines")
-                     <*> (o .:? "frozenRowCount")
-                     <*> (o .:? "rowGroupControlAfter")
-                     <*> (o .:? "rowCount"))
-
-instance ToJSON GridProperties where
-        toJSON GridProperties'{..}
-          = object
-              (catMaybes
-                 [("frozenColumnCount" .=) <$> _gpFrozenColumnCount,
-                  ("columnCount" .=) <$> _gpColumnCount,
-                  ("columnGroupControlAfter" .=) <$>
-                    _gpColumnGroupControlAfter,
-                  ("hideGridlines" .=) <$> _gpHideGridlines,
-                  ("frozenRowCount" .=) <$> _gpFrozenRowCount,
-                  ("rowGroupControlAfter" .=) <$>
-                    _gpRowGroupControlAfter,
-                  ("rowCount" .=) <$> _gpRowCount])
-
--- | A </chart/interactive/docs/gallery/histogram histogram chart>. A
--- histogram chart groups data items into bins, displaying each bin as a
--- column of stacked items. Histograms are used to display the distribution
--- of a dataset. Each column of items represents a range into which those
--- items fall. The number of bins can be chosen automatically or specified
--- explicitly.
---
--- /See:/ 'histogramChartSpec' smart constructor.
-data HistogramChartSpec =
-  HistogramChartSpec'
-    { _hcsLegendPosition    :: !(Maybe HistogramChartSpecLegendPosition)
-    , _hcsSeries            :: !(Maybe [HistogramSeries])
-    , _hcsShowItemDividers  :: !(Maybe Bool)
-    , _hcsOutlierPercentile :: !(Maybe (Textual Double))
-    , _hcsBucketSize        :: !(Maybe (Textual Double))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HistogramChartSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hcsLegendPosition'
---
--- * 'hcsSeries'
---
--- * 'hcsShowItemDividers'
---
--- * 'hcsOutlierPercentile'
---
--- * 'hcsBucketSize'
-histogramChartSpec
-    :: HistogramChartSpec
-histogramChartSpec =
-  HistogramChartSpec'
-    { _hcsLegendPosition = Nothing
-    , _hcsSeries = Nothing
-    , _hcsShowItemDividers = Nothing
-    , _hcsOutlierPercentile = Nothing
-    , _hcsBucketSize = Nothing
-    }
-
-
--- | The position of the chart legend.
-hcsLegendPosition :: Lens' HistogramChartSpec (Maybe HistogramChartSpecLegendPosition)
-hcsLegendPosition
-  = lens _hcsLegendPosition
-      (\ s a -> s{_hcsLegendPosition = a})
-
--- | The series for a histogram may be either a single series of values to be
--- bucketed or multiple series, each of the same length, containing the
--- name of the series followed by the values to be bucketed for that
--- series.
-hcsSeries :: Lens' HistogramChartSpec [HistogramSeries]
-hcsSeries
-  = lens _hcsSeries (\ s a -> s{_hcsSeries = a}) .
-      _Default
-      . _Coerce
-
--- | Whether horizontal divider lines should be displayed between items in
--- each column.
-hcsShowItemDividers :: Lens' HistogramChartSpec (Maybe Bool)
-hcsShowItemDividers
-  = lens _hcsShowItemDividers
-      (\ s a -> s{_hcsShowItemDividers = a})
-
--- | The outlier percentile is used to ensure that outliers do not adversely
--- affect the calculation of bucket sizes. For example, setting an outlier
--- percentile of 0.05 indicates that the top and bottom 5% of values when
--- calculating buckets. The values are still included in the chart, they
--- will be added to the first or last buckets instead of their own buckets.
--- Must be between 0.0 and 0.5.
-hcsOutlierPercentile :: Lens' HistogramChartSpec (Maybe Double)
-hcsOutlierPercentile
-  = lens _hcsOutlierPercentile
-      (\ s a -> s{_hcsOutlierPercentile = a})
-      . mapping _Coerce
-
--- | By default the bucket size (the range of values stacked in a single
--- column) is chosen automatically, but it may be overridden here. E.g., A
--- bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.
--- Cannot be negative. This field is optional.
-hcsBucketSize :: Lens' HistogramChartSpec (Maybe Double)
-hcsBucketSize
-  = lens _hcsBucketSize
-      (\ s a -> s{_hcsBucketSize = a})
-      . mapping _Coerce
-
-instance FromJSON HistogramChartSpec where
-        parseJSON
-          = withObject "HistogramChartSpec"
-              (\ o ->
-                 HistogramChartSpec' <$>
-                   (o .:? "legendPosition") <*>
-                     (o .:? "series" .!= mempty)
-                     <*> (o .:? "showItemDividers")
-                     <*> (o .:? "outlierPercentile")
-                     <*> (o .:? "bucketSize"))
-
-instance ToJSON HistogramChartSpec where
-        toJSON HistogramChartSpec'{..}
-          = object
-              (catMaybes
-                 [("legendPosition" .=) <$> _hcsLegendPosition,
-                  ("series" .=) <$> _hcsSeries,
-                  ("showItemDividers" .=) <$> _hcsShowItemDividers,
-                  ("outlierPercentile" .=) <$> _hcsOutlierPercentile,
-                  ("bucketSize" .=) <$> _hcsBucketSize])
-
--- | The criteria for showing\/hiding values per column. The map\'s key is
--- the column index, and the value is the criteria for that column.
---
--- /See:/ 'basicFilterCriteria' smart constructor.
-newtype BasicFilterCriteria =
-  BasicFilterCriteria'
-    { _bfcAddtional :: HashMap Text FilterCriteria
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BasicFilterCriteria' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bfcAddtional'
-basicFilterCriteria
-    :: HashMap Text FilterCriteria -- ^ 'bfcAddtional'
-    -> BasicFilterCriteria
-basicFilterCriteria pBfcAddtional_ =
-  BasicFilterCriteria' {_bfcAddtional = _Coerce # pBfcAddtional_}
-
-
-bfcAddtional :: Lens' BasicFilterCriteria (HashMap Text FilterCriteria)
-bfcAddtional
-  = lens _bfcAddtional (\ s a -> s{_bfcAddtional = a})
-      . _Coerce
-
-instance FromJSON BasicFilterCriteria where
-        parseJSON
-          = withObject "BasicFilterCriteria"
-              (\ o -> BasicFilterCriteria' <$> (parseJSONObject o))
-
-instance ToJSON BasicFilterCriteria where
-        toJSON = toJSON . _bfcAddtional
-
--- | Adds a new banded range to the spreadsheet.
---
--- /See:/ 'addBandingRequest' smart constructor.
-newtype AddBandingRequest =
-  AddBandingRequest'
-    { _abrBandedRange :: Maybe BandedRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddBandingRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'abrBandedRange'
-addBandingRequest
-    :: AddBandingRequest
-addBandingRequest = AddBandingRequest' {_abrBandedRange = Nothing}
-
-
--- | The banded range to add. The bandedRangeId field is optional; if one is
--- not set, an id will be randomly generated. (It is an error to specify
--- the ID of a range that already exists.)
-abrBandedRange :: Lens' AddBandingRequest (Maybe BandedRange)
-abrBandedRange
-  = lens _abrBandedRange
-      (\ s a -> s{_abrBandedRange = a})
-
-instance FromJSON AddBandingRequest where
-        parseJSON
-          = withObject "AddBandingRequest"
-              (\ o -> AddBandingRequest' <$> (o .:? "bandedRange"))
-
-instance ToJSON AddBandingRequest where
-        toJSON AddBandingRequest'{..}
-          = object
-              (catMaybes [("bandedRange" .=) <$> _abrBandedRange])
-
--- | Updates properties of dimensions within the specified range.
---
--- /See:/ 'updateDimensionPropertiesRequest' smart constructor.
-data UpdateDimensionPropertiesRequest =
-  UpdateDimensionPropertiesRequest'
-    { _udprRange      :: !(Maybe DimensionRange)
-    , _udprFields     :: !(Maybe GFieldMask)
-    , _udprProperties :: !(Maybe DimensionProperties)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateDimensionPropertiesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udprRange'
---
--- * 'udprFields'
---
--- * 'udprProperties'
-updateDimensionPropertiesRequest
-    :: UpdateDimensionPropertiesRequest
-updateDimensionPropertiesRequest =
-  UpdateDimensionPropertiesRequest'
-    {_udprRange = Nothing, _udprFields = Nothing, _udprProperties = Nothing}
-
-
--- | The rows or columns to update.
-udprRange :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionRange)
-udprRange
-  = lens _udprRange (\ s a -> s{_udprRange = a})
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \`properties\` is implied and should not be specified. A single
--- \`\"*\"\` can be used as short-hand for listing every field.
-udprFields :: Lens' UpdateDimensionPropertiesRequest (Maybe GFieldMask)
-udprFields
-  = lens _udprFields (\ s a -> s{_udprFields = a})
-
--- | Properties to update.
-udprProperties :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionProperties)
-udprProperties
-  = lens _udprProperties
-      (\ s a -> s{_udprProperties = a})
-
-instance FromJSON UpdateDimensionPropertiesRequest
-         where
-        parseJSON
-          = withObject "UpdateDimensionPropertiesRequest"
-              (\ o ->
-                 UpdateDimensionPropertiesRequest' <$>
-                   (o .:? "range") <*> (o .:? "fields") <*>
-                     (o .:? "properties"))
-
-instance ToJSON UpdateDimensionPropertiesRequest
-         where
-        toJSON UpdateDimensionPropertiesRequest'{..}
-          = object
-              (catMaybes
-                 [("range" .=) <$> _udprRange,
-                  ("fields" .=) <$> _udprFields,
-                  ("properties" .=) <$> _udprProperties])
-
--- | An optional mapping of filters per source column offset. The filters are
--- applied before aggregating data into the pivot table. The map\'s key is
--- the column offset of the source range that you want to filter, and the
--- value is the criteria for that column. For example, if the source was
--- \`C10:E15\`, a key of \`0\` will have the filter for column \`C\`,
--- whereas the key \`1\` is for column \`D\`.
---
--- /See:/ 'pivotTableCriteria' smart constructor.
-newtype PivotTableCriteria =
-  PivotTableCriteria'
-    { _ptcAddtional :: HashMap Text PivotFilterCriteria
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PivotTableCriteria' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ptcAddtional'
-pivotTableCriteria
-    :: HashMap Text PivotFilterCriteria -- ^ 'ptcAddtional'
-    -> PivotTableCriteria
-pivotTableCriteria pPtcAddtional_ =
-  PivotTableCriteria' {_ptcAddtional = _Coerce # pPtcAddtional_}
-
-
-ptcAddtional :: Lens' PivotTableCriteria (HashMap Text PivotFilterCriteria)
-ptcAddtional
-  = lens _ptcAddtional (\ s a -> s{_ptcAddtional = a})
-      . _Coerce
-
-instance FromJSON PivotTableCriteria where
-        parseJSON
-          = withObject "PivotTableCriteria"
-              (\ o -> PivotTableCriteria' <$> (parseJSONObject o))
-
-instance ToJSON PivotTableCriteria where
-        toJSON = toJSON . _ptcAddtional
-
--- | Fills in more data based on existing data.
---
--- /See:/ 'autoFillRequest' smart constructor.
-data AutoFillRequest =
-  AutoFillRequest'
-    { _afrSourceAndDestination :: !(Maybe SourceAndDestination)
-    , _afrUseAlternateSeries   :: !(Maybe Bool)
-    , _afrRange                :: !(Maybe GridRange)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AutoFillRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'afrSourceAndDestination'
---
--- * 'afrUseAlternateSeries'
---
--- * 'afrRange'
-autoFillRequest
-    :: AutoFillRequest
-autoFillRequest =
-  AutoFillRequest'
-    { _afrSourceAndDestination = Nothing
-    , _afrUseAlternateSeries = Nothing
-    , _afrRange = Nothing
-    }
-
-
--- | The source and destination areas to autofill. This explicitly lists the
--- source of the autofill and where to extend that data.
-afrSourceAndDestination :: Lens' AutoFillRequest (Maybe SourceAndDestination)
-afrSourceAndDestination
-  = lens _afrSourceAndDestination
-      (\ s a -> s{_afrSourceAndDestination = a})
-
--- | True if we should generate data with the \"alternate\" series. This
--- differs based on the type and amount of source data.
-afrUseAlternateSeries :: Lens' AutoFillRequest (Maybe Bool)
-afrUseAlternateSeries
-  = lens _afrUseAlternateSeries
-      (\ s a -> s{_afrUseAlternateSeries = a})
-
--- | The range to autofill. This will examine the range and detect the
--- location that has data and automatically fill that data in to the rest
--- of the range.
-afrRange :: Lens' AutoFillRequest (Maybe GridRange)
-afrRange = lens _afrRange (\ s a -> s{_afrRange = a})
-
-instance FromJSON AutoFillRequest where
-        parseJSON
-          = withObject "AutoFillRequest"
-              (\ o ->
-                 AutoFillRequest' <$>
-                   (o .:? "sourceAndDestination") <*>
-                     (o .:? "useAlternateSeries")
-                     <*> (o .:? "range"))
-
-instance ToJSON AutoFillRequest where
-        toJSON AutoFillRequest'{..}
-          = object
-              (catMaybes
-                 [("sourceAndDestination" .=) <$>
-                    _afrSourceAndDestination,
-                  ("useAlternateSeries" .=) <$> _afrUseAlternateSeries,
-                  ("range" .=) <$> _afrRange])
-
--- | Selects DeveloperMetadata that matches all of the specified fields. For
--- example, if only a metadata ID is specified this considers the
--- DeveloperMetadata with that particular unique ID. If a metadata key is
--- specified, this considers all developer metadata with that key. If a
--- key, visibility, and location type are all specified, this considers all
--- developer metadata with that key and visibility that are associated with
--- a location of that type. In general, this selects all DeveloperMetadata
--- that matches the intersection of all the specified fields; any field or
--- combination of fields may be specified.
---
--- /See:/ 'developerMetadataLookup' smart constructor.
-data DeveloperMetadataLookup =
-  DeveloperMetadataLookup'
-    { _dLocationMatchingStrategy :: !(Maybe DeveloperMetadataLookupLocationMatchingStrategy)
-    , _dMetadataId               :: !(Maybe (Textual Int32))
-    , _dVisibility               :: !(Maybe DeveloperMetadataLookupVisibility)
-    , _dMetadataKey              :: !(Maybe Text)
-    , _dLocationType             :: !(Maybe DeveloperMetadataLookupLocationType)
-    , _dMetadataLocation         :: !(Maybe DeveloperMetadataLocation)
-    , _dMetadataValue            :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeveloperMetadataLookup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dLocationMatchingStrategy'
---
--- * 'dMetadataId'
---
--- * 'dVisibility'
---
--- * 'dMetadataKey'
---
--- * 'dLocationType'
---
--- * 'dMetadataLocation'
---
--- * 'dMetadataValue'
-developerMetadataLookup
-    :: DeveloperMetadataLookup
-developerMetadataLookup =
-  DeveloperMetadataLookup'
-    { _dLocationMatchingStrategy = Nothing
-    , _dMetadataId = Nothing
-    , _dVisibility = Nothing
-    , _dMetadataKey = Nothing
-    , _dLocationType = Nothing
-    , _dMetadataLocation = Nothing
-    , _dMetadataValue = Nothing
-    }
-
-
--- | Determines how this lookup matches the location. If this field is
--- specified as EXACT, only developer metadata associated on the exact
--- location specified is matched. If this field is specified to
--- INTERSECTING, developer metadata associated on intersecting locations is
--- also matched. If left unspecified, this field assumes a default value of
--- INTERSECTING. If this field is specified, a metadataLocation must also
--- be specified.
-dLocationMatchingStrategy :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationMatchingStrategy)
-dLocationMatchingStrategy
-  = lens _dLocationMatchingStrategy
-      (\ s a -> s{_dLocationMatchingStrategy = a})
-
--- | Limits the selected developer metadata to that which has a matching
--- DeveloperMetadata.metadata_id.
-dMetadataId :: Lens' DeveloperMetadataLookup (Maybe Int32)
-dMetadataId
-  = lens _dMetadataId (\ s a -> s{_dMetadataId = a}) .
-      mapping _Coerce
-
--- | Limits the selected developer metadata to that which has a matching
--- DeveloperMetadata.visibility. If left unspecified, all developer
--- metadata visibile to the requesting project is considered.
-dVisibility :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupVisibility)
-dVisibility
-  = lens _dVisibility (\ s a -> s{_dVisibility = a})
-
--- | Limits the selected developer metadata to that which has a matching
--- DeveloperMetadata.metadata_key.
-dMetadataKey :: Lens' DeveloperMetadataLookup (Maybe Text)
-dMetadataKey
-  = lens _dMetadataKey (\ s a -> s{_dMetadataKey = a})
-
--- | Limits the selected developer metadata to those entries which are
--- associated with locations of the specified type. For example, when this
--- field is specified as ROW this lookup only considers developer metadata
--- associated on rows. If the field is left unspecified, all location types
--- are considered. This field cannot be specified as SPREADSHEET when the
--- locationMatchingStrategy is specified as INTERSECTING or when the
--- metadataLocation is specified as a non-spreadsheet location: spreadsheet
--- metadata cannot intersect any other developer metadata location. This
--- field also must be left unspecified when the locationMatchingStrategy is
--- specified as EXACT.
-dLocationType :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLookupLocationType)
-dLocationType
-  = lens _dLocationType
-      (\ s a -> s{_dLocationType = a})
-
--- | Limits the selected developer metadata to those entries associated with
--- the specified location. This field either matches exact locations or all
--- intersecting locations according the specified locationMatchingStrategy.
-dMetadataLocation :: Lens' DeveloperMetadataLookup (Maybe DeveloperMetadataLocation)
-dMetadataLocation
-  = lens _dMetadataLocation
-      (\ s a -> s{_dMetadataLocation = a})
-
--- | Limits the selected developer metadata to that which has a matching
--- DeveloperMetadata.metadata_value.
-dMetadataValue :: Lens' DeveloperMetadataLookup (Maybe Text)
-dMetadataValue
-  = lens _dMetadataValue
-      (\ s a -> s{_dMetadataValue = a})
-
-instance FromJSON DeveloperMetadataLookup where
-        parseJSON
-          = withObject "DeveloperMetadataLookup"
-              (\ o ->
-                 DeveloperMetadataLookup' <$>
-                   (o .:? "locationMatchingStrategy") <*>
-                     (o .:? "metadataId")
-                     <*> (o .:? "visibility")
-                     <*> (o .:? "metadataKey")
-                     <*> (o .:? "locationType")
-                     <*> (o .:? "metadataLocation")
-                     <*> (o .:? "metadataValue"))
-
-instance ToJSON DeveloperMetadataLookup where
-        toJSON DeveloperMetadataLookup'{..}
-          = object
-              (catMaybes
-                 [("locationMatchingStrategy" .=) <$>
-                    _dLocationMatchingStrategy,
-                  ("metadataId" .=) <$> _dMetadataId,
-                  ("visibility" .=) <$> _dVisibility,
-                  ("metadataKey" .=) <$> _dMetadataKey,
-                  ("locationType" .=) <$> _dLocationType,
-                  ("metadataLocation" .=) <$> _dMetadataLocation,
-                  ("metadataValue" .=) <$> _dMetadataValue])
-
--- | Duplicates the contents of a sheet.
---
--- /See:/ 'duplicateSheetRequest' smart constructor.
-data DuplicateSheetRequest =
-  DuplicateSheetRequest'
-    { _dsrNewSheetName     :: !(Maybe Text)
-    , _dsrInsertSheetIndex :: !(Maybe (Textual Int32))
-    , _dsrSourceSheetId    :: !(Maybe (Textual Int32))
-    , _dsrNewSheetId       :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DuplicateSheetRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsrNewSheetName'
---
--- * 'dsrInsertSheetIndex'
---
--- * 'dsrSourceSheetId'
---
--- * 'dsrNewSheetId'
-duplicateSheetRequest
-    :: DuplicateSheetRequest
-duplicateSheetRequest =
-  DuplicateSheetRequest'
-    { _dsrNewSheetName = Nothing
-    , _dsrInsertSheetIndex = Nothing
-    , _dsrSourceSheetId = Nothing
-    , _dsrNewSheetId = Nothing
-    }
-
-
--- | The name of the new sheet. If empty, a new name is chosen for you.
-dsrNewSheetName :: Lens' DuplicateSheetRequest (Maybe Text)
-dsrNewSheetName
-  = lens _dsrNewSheetName
-      (\ s a -> s{_dsrNewSheetName = a})
-
--- | The zero-based index where the new sheet should be inserted. The index
--- of all sheets after this are incremented.
-dsrInsertSheetIndex :: Lens' DuplicateSheetRequest (Maybe Int32)
-dsrInsertSheetIndex
-  = lens _dsrInsertSheetIndex
-      (\ s a -> s{_dsrInsertSheetIndex = a})
-      . mapping _Coerce
-
--- | The sheet to duplicate.
-dsrSourceSheetId :: Lens' DuplicateSheetRequest (Maybe Int32)
-dsrSourceSheetId
-  = lens _dsrSourceSheetId
-      (\ s a -> s{_dsrSourceSheetId = a})
-      . mapping _Coerce
-
--- | If set, the ID of the new sheet. If not set, an ID is chosen. If set,
--- the ID must not conflict with any existing sheet ID. If set, it must be
--- non-negative.
-dsrNewSheetId :: Lens' DuplicateSheetRequest (Maybe Int32)
-dsrNewSheetId
-  = lens _dsrNewSheetId
-      (\ s a -> s{_dsrNewSheetId = a})
-      . mapping _Coerce
-
-instance FromJSON DuplicateSheetRequest where
-        parseJSON
-          = withObject "DuplicateSheetRequest"
-              (\ o ->
-                 DuplicateSheetRequest' <$>
-                   (o .:? "newSheetName") <*> (o .:? "insertSheetIndex")
-                     <*> (o .:? "sourceSheetId")
-                     <*> (o .:? "newSheetId"))
-
-instance ToJSON DuplicateSheetRequest where
-        toJSON DuplicateSheetRequest'{..}
-          = object
-              (catMaybes
-                 [("newSheetName" .=) <$> _dsrNewSheetName,
-                  ("insertSheetIndex" .=) <$> _dsrInsertSheetIndex,
-                  ("sourceSheetId" .=) <$> _dsrSourceSheetId,
-                  ("newSheetId" .=) <$> _dsrNewSheetId])
-
--- | The rotation applied to text in a cell.
---
--- /See:/ 'textRotation' smart constructor.
-data TextRotation =
-  TextRotation'
-    { _trAngle    :: !(Maybe (Textual Int32))
-    , _trVertical :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TextRotation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'trAngle'
---
--- * 'trVertical'
-textRotation
-    :: TextRotation
-textRotation = TextRotation' {_trAngle = Nothing, _trVertical = Nothing}
-
-
--- | The angle between the standard orientation and the desired orientation.
--- Measured in degrees. Valid values are between -90 and 90. Positive
--- angles are angled upwards, negative are angled downwards. Note: For LTR
--- text direction positive angles are in the counterclockwise direction,
--- whereas for RTL they are in the clockwise direction
-trAngle :: Lens' TextRotation (Maybe Int32)
-trAngle
-  = lens _trAngle (\ s a -> s{_trAngle = a}) .
-      mapping _Coerce
-
--- | If true, text reads top to bottom, but the orientation of individual
--- characters is unchanged. For example: | V | | e | | r | | t | | i | | c
--- | | a | | l |
-trVertical :: Lens' TextRotation (Maybe Bool)
-trVertical
-  = lens _trVertical (\ s a -> s{_trVertical = a})
-
-instance FromJSON TextRotation where
-        parseJSON
-          = withObject "TextRotation"
-              (\ o ->
-                 TextRotation' <$>
-                   (o .:? "angle") <*> (o .:? "vertical"))
-
-instance ToJSON TextRotation where
-        toJSON TextRotation'{..}
-          = object
-              (catMaybes
-                 [("angle" .=) <$> _trAngle,
-                  ("vertical" .=) <$> _trVertical])
-
--- | The result of a filter view being duplicated.
---
--- /See:/ 'duplicateFilterViewResponse' smart constructor.
-newtype DuplicateFilterViewResponse =
-  DuplicateFilterViewResponse'
-    { _dfvrFilter :: Maybe FilterView
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DuplicateFilterViewResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfvrFilter'
-duplicateFilterViewResponse
-    :: DuplicateFilterViewResponse
-duplicateFilterViewResponse =
-  DuplicateFilterViewResponse' {_dfvrFilter = Nothing}
-
-
--- | The newly created filter.
-dfvrFilter :: Lens' DuplicateFilterViewResponse (Maybe FilterView)
-dfvrFilter
-  = lens _dfvrFilter (\ s a -> s{_dfvrFilter = a})
-
-instance FromJSON DuplicateFilterViewResponse where
-        parseJSON
-          = withObject "DuplicateFilterViewResponse"
-              (\ o ->
-                 DuplicateFilterViewResponse' <$> (o .:? "filter"))
-
-instance ToJSON DuplicateFilterViewResponse where
-        toJSON DuplicateFilterViewResponse'{..}
-          = object (catMaybes [("filter" .=) <$> _dfvrFilter])
-
--- | The request for updating more than one range of values in a spreadsheet.
---
--- /See:/ 'batchUpdateValuesRequest' smart constructor.
-data BatchUpdateValuesRequest =
-  BatchUpdateValuesRequest'
-    { _buvrData                         :: !(Maybe [ValueRange])
-    , _buvrValueInputOption             :: !(Maybe BatchUpdateValuesRequestValueInputOption)
-    , _buvrIncludeValuesInResponse      :: !(Maybe Bool)
-    , _buvrResponseDateTimeRenderOption :: !(Maybe BatchUpdateValuesRequestResponseDateTimeRenderOption)
-    , _buvrResponseValueRenderOption    :: !(Maybe BatchUpdateValuesRequestResponseValueRenderOption)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchUpdateValuesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'buvrData'
---
--- * 'buvrValueInputOption'
---
--- * 'buvrIncludeValuesInResponse'
---
--- * 'buvrResponseDateTimeRenderOption'
---
--- * 'buvrResponseValueRenderOption'
-batchUpdateValuesRequest
-    :: BatchUpdateValuesRequest
-batchUpdateValuesRequest =
-  BatchUpdateValuesRequest'
-    { _buvrData = Nothing
-    , _buvrValueInputOption = Nothing
-    , _buvrIncludeValuesInResponse = Nothing
-    , _buvrResponseDateTimeRenderOption = Nothing
-    , _buvrResponseValueRenderOption = Nothing
-    }
-
-
--- | The new values to apply to the spreadsheet.
-buvrData :: Lens' BatchUpdateValuesRequest [ValueRange]
-buvrData
-  = lens _buvrData (\ s a -> s{_buvrData = a}) .
-      _Default
-      . _Coerce
-
--- | How the input data should be interpreted.
-buvrValueInputOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestValueInputOption)
-buvrValueInputOption
-  = lens _buvrValueInputOption
-      (\ s a -> s{_buvrValueInputOption = a})
-
--- | Determines if the update response should include the values of the cells
--- that were updated. By default, responses do not include the updated
--- values. The \`updatedData\` field within each of the
--- BatchUpdateValuesResponse.responses will contain the updated values. If
--- the range to write was larger than than the range actually written, the
--- response will include all values in the requested range (excluding
--- trailing empty rows and columns).
-buvrIncludeValuesInResponse :: Lens' BatchUpdateValuesRequest (Maybe Bool)
-buvrIncludeValuesInResponse
-  = lens _buvrIncludeValuesInResponse
-      (\ s a -> s{_buvrIncludeValuesInResponse = a})
-
--- | Determines how dates, times, and durations in the response should be
--- rendered. This is ignored if response_value_render_option is
--- FORMATTED_VALUE. The default dateTime render option is
--- DateTimeRenderOption.SERIAL_NUMBER.
-buvrResponseDateTimeRenderOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestResponseDateTimeRenderOption)
-buvrResponseDateTimeRenderOption
-  = lens _buvrResponseDateTimeRenderOption
-      (\ s a -> s{_buvrResponseDateTimeRenderOption = a})
-
--- | Determines how values in the response should be rendered. The default
--- render option is ValueRenderOption.FORMATTED_VALUE.
-buvrResponseValueRenderOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestResponseValueRenderOption)
-buvrResponseValueRenderOption
-  = lens _buvrResponseValueRenderOption
-      (\ s a -> s{_buvrResponseValueRenderOption = a})
-
-instance FromJSON BatchUpdateValuesRequest where
-        parseJSON
-          = withObject "BatchUpdateValuesRequest"
-              (\ o ->
-                 BatchUpdateValuesRequest' <$>
-                   (o .:? "data" .!= mempty) <*>
-                     (o .:? "valueInputOption")
-                     <*> (o .:? "includeValuesInResponse")
-                     <*> (o .:? "responseDateTimeRenderOption")
-                     <*> (o .:? "responseValueRenderOption"))
-
-instance ToJSON BatchUpdateValuesRequest where
-        toJSON BatchUpdateValuesRequest'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _buvrData,
-                  ("valueInputOption" .=) <$> _buvrValueInputOption,
-                  ("includeValuesInResponse" .=) <$>
-                    _buvrIncludeValuesInResponse,
-                  ("responseDateTimeRenderOption" .=) <$>
-                    _buvrResponseDateTimeRenderOption,
-                  ("responseValueRenderOption" .=) <$>
-                    _buvrResponseValueRenderOption])
-
--- | A range of values whose location is specified by a DataFilter.
---
--- /See:/ 'dataFilterValueRange' smart constructor.
-data DataFilterValueRange =
-  DataFilterValueRange'
-    { _dfvrValues         :: !(Maybe [[JSONValue]])
-    , _dfvrDataFilter     :: !(Maybe DataFilter)
-    , _dfvrMajorDimension :: !(Maybe DataFilterValueRangeMajorDimension)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DataFilterValueRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfvrValues'
---
--- * 'dfvrDataFilter'
---
--- * 'dfvrMajorDimension'
-dataFilterValueRange
-    :: DataFilterValueRange
-dataFilterValueRange =
-  DataFilterValueRange'
-    { _dfvrValues = Nothing
-    , _dfvrDataFilter = Nothing
-    , _dfvrMajorDimension = Nothing
-    }
-
-
--- | The data to be written. If the provided values exceed any of the ranges
--- matched by the data filter then the request will fail. If the provided
--- values are less than the matched ranges only the specified values will
--- be written, existing values in the matched ranges will remain
--- unaffected.
-dfvrValues :: Lens' DataFilterValueRange [[JSONValue]]
-dfvrValues
-  = lens _dfvrValues (\ s a -> s{_dfvrValues = a}) .
-      _Default
-      . _Coerce
-
--- | The data filter describing the location of the values in the
--- spreadsheet.
-dfvrDataFilter :: Lens' DataFilterValueRange (Maybe DataFilter)
-dfvrDataFilter
-  = lens _dfvrDataFilter
-      (\ s a -> s{_dfvrDataFilter = a})
-
--- | The major dimension of the values.
-dfvrMajorDimension :: Lens' DataFilterValueRange (Maybe DataFilterValueRangeMajorDimension)
-dfvrMajorDimension
-  = lens _dfvrMajorDimension
-      (\ s a -> s{_dfvrMajorDimension = a})
-
-instance FromJSON DataFilterValueRange where
-        parseJSON
-          = withObject "DataFilterValueRange"
-              (\ o ->
-                 DataFilterValueRange' <$>
-                   (o .:? "values" .!= mempty) <*> (o .:? "dataFilter")
-                     <*> (o .:? "majorDimension"))
-
-instance ToJSON DataFilterValueRange where
-        toJSON DataFilterValueRange'{..}
-          = object
-              (catMaybes
-                 [("values" .=) <$> _dfvrValues,
-                  ("dataFilter" .=) <$> _dfvrDataFilter,
-                  ("majorDimension" .=) <$> _dfvrMajorDimension])
-
--- | Adds a chart to a sheet in the spreadsheet.
---
--- /See:/ 'addChartRequest' smart constructor.
-newtype AddChartRequest =
-  AddChartRequest'
-    { _aChart :: Maybe EmbeddedChart
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddChartRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aChart'
-addChartRequest
-    :: AddChartRequest
-addChartRequest = AddChartRequest' {_aChart = Nothing}
-
-
--- | The chart that should be added to the spreadsheet, including the
--- position where it should be placed. The chartId field is optional; if
--- one is not set, an id will be randomly generated. (It is an error to
--- specify the ID of a chart that already exists.)
-aChart :: Lens' AddChartRequest (Maybe EmbeddedChart)
-aChart = lens _aChart (\ s a -> s{_aChart = a})
-
-instance FromJSON AddChartRequest where
-        parseJSON
-          = withObject "AddChartRequest"
-              (\ o -> AddChartRequest' <$> (o .:? "chart"))
-
-instance ToJSON AddChartRequest where
-        toJSON AddChartRequest'{..}
-          = object (catMaybes [("chart" .=) <$> _aChart])
-
--- | A named range.
---
--- /See:/ 'namedRange' smart constructor.
-data NamedRange =
-  NamedRange'
-    { _nrNamedRangeId :: !(Maybe Text)
-    , _nrName         :: !(Maybe Text)
-    , _nrRange        :: !(Maybe GridRange)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NamedRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nrNamedRangeId'
---
--- * 'nrName'
---
--- * 'nrRange'
-namedRange
-    :: NamedRange
-namedRange =
-  NamedRange' {_nrNamedRangeId = Nothing, _nrName = Nothing, _nrRange = Nothing}
-
-
--- | The ID of the named range.
-nrNamedRangeId :: Lens' NamedRange (Maybe Text)
-nrNamedRangeId
-  = lens _nrNamedRangeId
-      (\ s a -> s{_nrNamedRangeId = a})
-
--- | The name of the named range.
-nrName :: Lens' NamedRange (Maybe Text)
-nrName = lens _nrName (\ s a -> s{_nrName = a})
-
--- | The range this represents.
-nrRange :: Lens' NamedRange (Maybe GridRange)
-nrRange = lens _nrRange (\ s a -> s{_nrRange = a})
-
-instance FromJSON NamedRange where
-        parseJSON
-          = withObject "NamedRange"
-              (\ o ->
-                 NamedRange' <$>
-                   (o .:? "namedRangeId") <*> (o .:? "name") <*>
-                     (o .:? "range"))
-
-instance ToJSON NamedRange where
-        toJSON NamedRange'{..}
-          = object
-              (catMaybes
-                 [("namedRangeId" .=) <$> _nrNamedRangeId,
-                  ("name" .=) <$> _nrName, ("range" .=) <$> _nrRange])
-
--- | Merges all cells in the range.
---
--- /See:/ 'mergeCellsRequest' smart constructor.
-data MergeCellsRequest =
-  MergeCellsRequest'
-    { _mcrMergeType :: !(Maybe MergeCellsRequestMergeType)
-    , _mcrRange     :: !(Maybe GridRange)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MergeCellsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mcrMergeType'
---
--- * 'mcrRange'
-mergeCellsRequest
-    :: MergeCellsRequest
-mergeCellsRequest =
-  MergeCellsRequest' {_mcrMergeType = Nothing, _mcrRange = Nothing}
-
-
--- | How the cells should be merged.
-mcrMergeType :: Lens' MergeCellsRequest (Maybe MergeCellsRequestMergeType)
-mcrMergeType
-  = lens _mcrMergeType (\ s a -> s{_mcrMergeType = a})
-
--- | The range of cells to merge.
-mcrRange :: Lens' MergeCellsRequest (Maybe GridRange)
-mcrRange = lens _mcrRange (\ s a -> s{_mcrRange = a})
-
-instance FromJSON MergeCellsRequest where
-        parseJSON
-          = withObject "MergeCellsRequest"
-              (\ o ->
-                 MergeCellsRequest' <$>
-                   (o .:? "mergeType") <*> (o .:? "range"))
-
-instance ToJSON MergeCellsRequest where
-        toJSON MergeCellsRequest'{..}
-          = object
-              (catMaybes
-                 [("mergeType" .=) <$> _mcrMergeType,
-                  ("range" .=) <$> _mcrRange])
-
--- | Allows you to manually organize the values in a source data column into
--- buckets with names of your choosing. For example, a pivot table that
--- aggregates population by state: +-------+-------------------+ | State |
--- SUM of Population | +-------+-------------------+ | AK | 0.7 | | AL |
--- 4.8 | | AR | 2.9 | ... +-------+-------------------+ could be turned
--- into a pivot table that aggregates population by time zone by providing
--- a list of groups (for example, groupName = \'Central\', items = [\'AL\',
--- \'AR\', \'IA\', ...]) to a manual group rule. Note that a similar effect
--- could be achieved by adding a time zone column to the source data and
--- adjusting the pivot table. +-----------+-------------------+ | Time Zone
--- | SUM of Population | +-----------+-------------------+ | Central |
--- 106.3 | | Eastern | 151.9 | | Mountain | 17.4 | ...
--- +-----------+-------------------+
---
--- /See:/ 'manualRule' smart constructor.
-newtype ManualRule =
-  ManualRule'
-    { _mrGroups :: Maybe [ManualRuleGroup]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ManualRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mrGroups'
-manualRule
-    :: ManualRule
-manualRule = ManualRule' {_mrGroups = Nothing}
-
-
--- | The list of group names and the corresponding items from the source data
--- that map to each group name.
-mrGroups :: Lens' ManualRule [ManualRuleGroup]
-mrGroups
-  = lens _mrGroups (\ s a -> s{_mrGroups = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ManualRule where
-        parseJSON
-          = withObject "ManualRule"
-              (\ o -> ManualRule' <$> (o .:? "groups" .!= mempty))
-
-instance ToJSON ManualRule where
-        toJSON ManualRule'{..}
-          = object (catMaybes [("groups" .=) <$> _mrGroups])
-
--- | Position settings for text.
---
--- /See:/ 'textPosition' smart constructor.
-newtype TextPosition =
-  TextPosition'
-    { _tpHorizontalAlignment :: Maybe TextPositionHorizontalAlignment
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TextPosition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpHorizontalAlignment'
-textPosition
-    :: TextPosition
-textPosition = TextPosition' {_tpHorizontalAlignment = Nothing}
-
-
--- | Horizontal alignment setting for the piece of text.
-tpHorizontalAlignment :: Lens' TextPosition (Maybe TextPositionHorizontalAlignment)
-tpHorizontalAlignment
-  = lens _tpHorizontalAlignment
-      (\ s a -> s{_tpHorizontalAlignment = a})
-
-instance FromJSON TextPosition where
-        parseJSON
-          = withObject "TextPosition"
-              (\ o ->
-                 TextPosition' <$> (o .:? "horizontalAlignment"))
-
-instance ToJSON TextPosition where
-        toJSON TextPosition'{..}
-          = object
-              (catMaybes
-                 [("horizontalAlignment" .=) <$>
-                    _tpHorizontalAlignment])
-
--- | A border along a cell.
---
--- /See:/ 'bOrder' smart constructor.
-data BOrder =
-  BOrder'
-    { _boStyle :: !(Maybe BOrderStyle)
-    , _boColor :: !(Maybe Color)
-    , _boWidth :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BOrder' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'boStyle'
---
--- * 'boColor'
---
--- * 'boWidth'
-bOrder
-    :: BOrder
-bOrder = BOrder' {_boStyle = Nothing, _boColor = Nothing, _boWidth = Nothing}
-
-
--- | The style of the border.
-boStyle :: Lens' BOrder (Maybe BOrderStyle)
-boStyle = lens _boStyle (\ s a -> s{_boStyle = a})
-
--- | The color of the border.
-boColor :: Lens' BOrder (Maybe Color)
-boColor = lens _boColor (\ s a -> s{_boColor = a})
-
--- | The width of the border, in pixels. Deprecated; the width is determined
--- by the \"style\" field.
-boWidth :: Lens' BOrder (Maybe Int32)
-boWidth
-  = lens _boWidth (\ s a -> s{_boWidth = a}) .
-      mapping _Coerce
-
-instance FromJSON BOrder where
-        parseJSON
-          = withObject "BOrder"
-              (\ o ->
-                 BOrder' <$>
-                   (o .:? "style") <*> (o .:? "color") <*>
-                     (o .:? "width"))
-
-instance ToJSON BOrder where
-        toJSON BOrder'{..}
-          = object
-              (catMaybes
-                 [("style" .=) <$> _boStyle,
-                  ("color" .=) <$> _boColor,
-                  ("width" .=) <$> _boWidth])
-
--- | A request to retrieve all developer metadata matching the set of
--- specified criteria.
---
--- /See:/ 'searchDeveloperMetadataRequest' smart constructor.
-newtype SearchDeveloperMetadataRequest =
-  SearchDeveloperMetadataRequest'
-    { _sdmrDataFilters :: Maybe [DataFilter]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SearchDeveloperMetadataRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdmrDataFilters'
-searchDeveloperMetadataRequest
-    :: SearchDeveloperMetadataRequest
-searchDeveloperMetadataRequest =
-  SearchDeveloperMetadataRequest' {_sdmrDataFilters = Nothing}
-
-
--- | The data filters describing the criteria used to determine which
--- DeveloperMetadata entries to return. DeveloperMetadata matching any of
--- the specified filters will be included in the response.
-sdmrDataFilters :: Lens' SearchDeveloperMetadataRequest [DataFilter]
-sdmrDataFilters
-  = lens _sdmrDataFilters
-      (\ s a -> s{_sdmrDataFilters = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON SearchDeveloperMetadataRequest
-         where
-        parseJSON
-          = withObject "SearchDeveloperMetadataRequest"
-              (\ o ->
-                 SearchDeveloperMetadataRequest' <$>
-                   (o .:? "dataFilters" .!= mempty))
-
-instance ToJSON SearchDeveloperMetadataRequest where
-        toJSON SearchDeveloperMetadataRequest'{..}
-          = object
-              (catMaybes [("dataFilters" .=) <$> _sdmrDataFilters])
-
--- | The series of a CandlestickData.
---
--- /See:/ 'candlestickSeries' smart constructor.
-newtype CandlestickSeries =
-  CandlestickSeries'
-    { _csData :: Maybe ChartData
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CandlestickSeries' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csData'
-candlestickSeries
-    :: CandlestickSeries
-candlestickSeries = CandlestickSeries' {_csData = Nothing}
-
-
--- | The data of the CandlestickSeries.
-csData :: Lens' CandlestickSeries (Maybe ChartData)
-csData = lens _csData (\ s a -> s{_csData = a})
-
-instance FromJSON CandlestickSeries where
-        parseJSON
-          = withObject "CandlestickSeries"
-              (\ o -> CandlestickSeries' <$> (o .:? "data"))
-
-instance ToJSON CandlestickSeries where
-        toJSON CandlestickSeries'{..}
-          = object (catMaybes [("data" .=) <$> _csData])
-
--- | The kinds of value that a cell in a spreadsheet can have.
---
--- /See:/ 'extendedValue' smart constructor.
-data ExtendedValue =
-  ExtendedValue'
-    { _evBoolValue    :: !(Maybe Bool)
-    , _evNumberValue  :: !(Maybe (Textual Double))
-    , _evErrorValue   :: !(Maybe ErrorValue)
-    , _evStringValue  :: !(Maybe Text)
-    , _evFormulaValue :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ExtendedValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'evBoolValue'
---
--- * 'evNumberValue'
---
--- * 'evErrorValue'
---
--- * 'evStringValue'
---
--- * 'evFormulaValue'
-extendedValue
-    :: ExtendedValue
-extendedValue =
-  ExtendedValue'
-    { _evBoolValue = Nothing
-    , _evNumberValue = Nothing
-    , _evErrorValue = Nothing
-    , _evStringValue = Nothing
-    , _evFormulaValue = Nothing
-    }
-
-
--- | Represents a boolean value.
-evBoolValue :: Lens' ExtendedValue (Maybe Bool)
-evBoolValue
-  = lens _evBoolValue (\ s a -> s{_evBoolValue = a})
-
--- | Represents a double value. Note: Dates, Times and DateTimes are
--- represented as doubles in \"serial number\" format.
-evNumberValue :: Lens' ExtendedValue (Maybe Double)
-evNumberValue
-  = lens _evNumberValue
-      (\ s a -> s{_evNumberValue = a})
-      . mapping _Coerce
-
--- | Represents an error. This field is read-only.
-evErrorValue :: Lens' ExtendedValue (Maybe ErrorValue)
-evErrorValue
-  = lens _evErrorValue (\ s a -> s{_evErrorValue = a})
-
--- | Represents a string value. Leading single quotes are not included. For
--- example, if the user typed \`\'123\` into the UI, this would be
--- represented as a \`stringValue\` of \`\"123\"\`.
-evStringValue :: Lens' ExtendedValue (Maybe Text)
-evStringValue
-  = lens _evStringValue
-      (\ s a -> s{_evStringValue = a})
-
--- | Represents a formula.
-evFormulaValue :: Lens' ExtendedValue (Maybe Text)
-evFormulaValue
-  = lens _evFormulaValue
-      (\ s a -> s{_evFormulaValue = a})
-
-instance FromJSON ExtendedValue where
-        parseJSON
-          = withObject "ExtendedValue"
-              (\ o ->
-                 ExtendedValue' <$>
-                   (o .:? "boolValue") <*> (o .:? "numberValue") <*>
-                     (o .:? "errorValue")
-                     <*> (o .:? "stringValue")
-                     <*> (o .:? "formulaValue"))
-
-instance ToJSON ExtendedValue where
-        toJSON ExtendedValue'{..}
-          = object
-              (catMaybes
-                 [("boolValue" .=) <$> _evBoolValue,
-                  ("numberValue" .=) <$> _evNumberValue,
-                  ("errorValue" .=) <$> _evErrorValue,
-                  ("stringValue" .=) <$> _evStringValue,
-                  ("formulaValue" .=) <$> _evFormulaValue])
-
--- | Adds a named range to the spreadsheet.
---
--- /See:/ 'addNamedRangeRequest' smart constructor.
-newtype AddNamedRangeRequest =
-  AddNamedRangeRequest'
-    { _aNamedRange :: Maybe NamedRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddNamedRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aNamedRange'
-addNamedRangeRequest
-    :: AddNamedRangeRequest
-addNamedRangeRequest = AddNamedRangeRequest' {_aNamedRange = Nothing}
-
-
--- | The named range to add. The namedRangeId field is optional; if one is
--- not set, an id will be randomly generated. (It is an error to specify
--- the ID of a range that already exists.)
-aNamedRange :: Lens' AddNamedRangeRequest (Maybe NamedRange)
-aNamedRange
-  = lens _aNamedRange (\ s a -> s{_aNamedRange = a})
-
-instance FromJSON AddNamedRangeRequest where
-        parseJSON
-          = withObject "AddNamedRangeRequest"
-              (\ o ->
-                 AddNamedRangeRequest' <$> (o .:? "namedRange"))
-
-instance ToJSON AddNamedRangeRequest where
-        toJSON AddNamedRangeRequest'{..}
-          = object
-              (catMaybes [("namedRange" .=) <$> _aNamedRange])
-
--- | Criteria for showing\/hiding rows in a pivot table.
---
--- /See:/ 'pivotFilterCriteria' smart constructor.
-newtype PivotFilterCriteria =
-  PivotFilterCriteria'
-    { _pfcVisibleValues :: Maybe [Text]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PivotFilterCriteria' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pfcVisibleValues'
-pivotFilterCriteria
-    :: PivotFilterCriteria
-pivotFilterCriteria = PivotFilterCriteria' {_pfcVisibleValues = Nothing}
-
-
--- | Values that should be included. Values not listed here are excluded.
-pfcVisibleValues :: Lens' PivotFilterCriteria [Text]
-pfcVisibleValues
-  = lens _pfcVisibleValues
-      (\ s a -> s{_pfcVisibleValues = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON PivotFilterCriteria where
-        parseJSON
-          = withObject "PivotFilterCriteria"
-              (\ o ->
-                 PivotFilterCriteria' <$>
-                   (o .:? "visibleValues" .!= mempty))
-
-instance ToJSON PivotFilterCriteria where
-        toJSON PivotFilterCriteria'{..}
-          = object
-              (catMaybes
-                 [("visibleValues" .=) <$> _pfcVisibleValues])
-
--- | A range along a single dimension on a sheet. All indexes are zero-based.
--- Indexes are half open: the start index is inclusive and the end index is
--- exclusive. Missing indexes indicate the range is unbounded on that side.
---
--- /See:/ 'dimensionRange' smart constructor.
-data DimensionRange =
-  DimensionRange'
-    { _drDimension  :: !(Maybe DimensionRangeDimension)
-    , _drEndIndex   :: !(Maybe (Textual Int32))
-    , _drSheetId    :: !(Maybe (Textual Int32))
-    , _drStartIndex :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DimensionRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drDimension'
---
--- * 'drEndIndex'
---
--- * 'drSheetId'
---
--- * 'drStartIndex'
-dimensionRange
-    :: DimensionRange
-dimensionRange =
-  DimensionRange'
-    { _drDimension = Nothing
-    , _drEndIndex = Nothing
-    , _drSheetId = Nothing
-    , _drStartIndex = Nothing
-    }
-
-
--- | The dimension of the span.
-drDimension :: Lens' DimensionRange (Maybe DimensionRangeDimension)
-drDimension
-  = lens _drDimension (\ s a -> s{_drDimension = a})
-
--- | The end (exclusive) of the span, or not set if unbounded.
-drEndIndex :: Lens' DimensionRange (Maybe Int32)
-drEndIndex
-  = lens _drEndIndex (\ s a -> s{_drEndIndex = a}) .
-      mapping _Coerce
-
--- | The sheet this span is on.
-drSheetId :: Lens' DimensionRange (Maybe Int32)
-drSheetId
-  = lens _drSheetId (\ s a -> s{_drSheetId = a}) .
-      mapping _Coerce
-
--- | The start (inclusive) of the span, or not set if unbounded.
-drStartIndex :: Lens' DimensionRange (Maybe Int32)
-drStartIndex
-  = lens _drStartIndex (\ s a -> s{_drStartIndex = a})
-      . mapping _Coerce
-
-instance FromJSON DimensionRange where
-        parseJSON
-          = withObject "DimensionRange"
-              (\ o ->
-                 DimensionRange' <$>
-                   (o .:? "dimension") <*> (o .:? "endIndex") <*>
-                     (o .:? "sheetId")
-                     <*> (o .:? "startIndex"))
-
-instance ToJSON DimensionRange where
-        toJSON DimensionRange'{..}
-          = object
-              (catMaybes
-                 [("dimension" .=) <$> _drDimension,
-                  ("endIndex" .=) <$> _drEndIndex,
-                  ("sheetId" .=) <$> _drSheetId,
-                  ("startIndex" .=) <$> _drStartIndex])
-
--- | Updates properties of a spreadsheet.
---
--- /See:/ 'updateSpreadsheetPropertiesRequest' smart constructor.
-data UpdateSpreadsheetPropertiesRequest =
-  UpdateSpreadsheetPropertiesRequest'
-    { _uFields     :: !(Maybe GFieldMask)
-    , _uProperties :: !(Maybe SpreadsheetProperties)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateSpreadsheetPropertiesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uFields'
---
--- * 'uProperties'
-updateSpreadsheetPropertiesRequest
-    :: UpdateSpreadsheetPropertiesRequest
-updateSpreadsheetPropertiesRequest =
-  UpdateSpreadsheetPropertiesRequest'
-    {_uFields = Nothing, _uProperties = Nothing}
-
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \'properties\' is implied and should not be specified. A single
--- \`\"*\"\` can be used as short-hand for listing every field.
-uFields :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe GFieldMask)
-uFields = lens _uFields (\ s a -> s{_uFields = a})
-
--- | The properties to update.
-uProperties :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe SpreadsheetProperties)
-uProperties
-  = lens _uProperties (\ s a -> s{_uProperties = a})
-
-instance FromJSON UpdateSpreadsheetPropertiesRequest
-         where
-        parseJSON
-          = withObject "UpdateSpreadsheetPropertiesRequest"
-              (\ o ->
-                 UpdateSpreadsheetPropertiesRequest' <$>
-                   (o .:? "fields") <*> (o .:? "properties"))
-
-instance ToJSON UpdateSpreadsheetPropertiesRequest
-         where
-        toJSON UpdateSpreadsheetPropertiesRequest'{..}
-          = object
-              (catMaybes
-                 [("fields" .=) <$> _uFields,
-                  ("properties" .=) <$> _uProperties])
-
--- | The domain of a CandlestickChart.
---
--- /See:/ 'candlestickDomain' smart constructor.
-data CandlestickDomain =
-  CandlestickDomain'
-    { _cdReversed :: !(Maybe Bool)
-    , _cdData     :: !(Maybe ChartData)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CandlestickDomain' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdReversed'
---
--- * 'cdData'
-candlestickDomain
-    :: CandlestickDomain
-candlestickDomain =
-  CandlestickDomain' {_cdReversed = Nothing, _cdData = Nothing}
-
-
--- | True to reverse the order of the domain values (horizontal axis).
-cdReversed :: Lens' CandlestickDomain (Maybe Bool)
-cdReversed
-  = lens _cdReversed (\ s a -> s{_cdReversed = a})
-
--- | The data of the CandlestickDomain.
-cdData :: Lens' CandlestickDomain (Maybe ChartData)
-cdData = lens _cdData (\ s a -> s{_cdData = a})
-
-instance FromJSON CandlestickDomain where
-        parseJSON
-          = withObject "CandlestickDomain"
-              (\ o ->
-                 CandlestickDomain' <$>
-                   (o .:? "reversed") <*> (o .:? "data"))
-
-instance ToJSON CandlestickDomain where
-        toJSON CandlestickDomain'{..}
-          = object
-              (catMaybes
-                 [("reversed" .=) <$> _cdReversed,
-                  ("data" .=) <$> _cdData])
-
--- | The result of adding a new protected range.
---
--- /See:/ 'addProtectedRangeResponse' smart constructor.
-newtype AddProtectedRangeResponse =
-  AddProtectedRangeResponse'
-    { _aProtectedRange :: Maybe ProtectedRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddProtectedRangeResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aProtectedRange'
-addProtectedRangeResponse
-    :: AddProtectedRangeResponse
-addProtectedRangeResponse =
-  AddProtectedRangeResponse' {_aProtectedRange = Nothing}
-
-
--- | The newly added protected range.
-aProtectedRange :: Lens' AddProtectedRangeResponse (Maybe ProtectedRange)
-aProtectedRange
-  = lens _aProtectedRange
-      (\ s a -> s{_aProtectedRange = a})
-
-instance FromJSON AddProtectedRangeResponse where
-        parseJSON
-          = withObject "AddProtectedRangeResponse"
-              (\ o ->
-                 AddProtectedRangeResponse' <$>
-                   (o .:? "protectedRange"))
-
-instance ToJSON AddProtectedRangeResponse where
-        toJSON AddProtectedRangeResponse'{..}
-          = object
-              (catMaybes
-                 [("protectedRange" .=) <$> _aProtectedRange])
-
--- | Appends rows or columns to the end of a sheet.
---
--- /See:/ 'appendDimensionRequest' smart constructor.
-data AppendDimensionRequest =
-  AppendDimensionRequest'
-    { _adrLength    :: !(Maybe (Textual Int32))
-    , _adrDimension :: !(Maybe AppendDimensionRequestDimension)
-    , _adrSheetId   :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AppendDimensionRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adrLength'
---
--- * 'adrDimension'
---
--- * 'adrSheetId'
-appendDimensionRequest
-    :: AppendDimensionRequest
-appendDimensionRequest =
-  AppendDimensionRequest'
-    {_adrLength = Nothing, _adrDimension = Nothing, _adrSheetId = Nothing}
-
-
--- | The number of rows or columns to append.
-adrLength :: Lens' AppendDimensionRequest (Maybe Int32)
-adrLength
-  = lens _adrLength (\ s a -> s{_adrLength = a}) .
-      mapping _Coerce
-
--- | Whether rows or columns should be appended.
-adrDimension :: Lens' AppendDimensionRequest (Maybe AppendDimensionRequestDimension)
-adrDimension
-  = lens _adrDimension (\ s a -> s{_adrDimension = a})
-
--- | The sheet to append rows or columns to.
-adrSheetId :: Lens' AppendDimensionRequest (Maybe Int32)
-adrSheetId
-  = lens _adrSheetId (\ s a -> s{_adrSheetId = a}) .
-      mapping _Coerce
-
-instance FromJSON AppendDimensionRequest where
-        parseJSON
-          = withObject "AppendDimensionRequest"
-              (\ o ->
-                 AppendDimensionRequest' <$>
-                   (o .:? "length") <*> (o .:? "dimension") <*>
-                     (o .:? "sheetId"))
-
-instance ToJSON AppendDimensionRequest where
-        toJSON AppendDimensionRequest'{..}
-          = object
-              (catMaybes
-                 [("length" .=) <$> _adrLength,
-                  ("dimension" .=) <$> _adrDimension,
-                  ("sheetId" .=) <$> _adrSheetId])
-
--- | The definition of how a value in a pivot table should be calculated.
---
--- /See:/ 'pivotValue' smart constructor.
-data PivotValue =
-  PivotValue'
-    { _pvSourceColumnOffSet    :: !(Maybe (Textual Int32))
-    , _pvFormula               :: !(Maybe Text)
-    , _pvName                  :: !(Maybe Text)
-    , _pvCalculatedDisplayType :: !(Maybe PivotValueCalculatedDisplayType)
-    , _pvSummarizeFunction     :: !(Maybe PivotValueSummarizeFunction)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PivotValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pvSourceColumnOffSet'
---
--- * 'pvFormula'
---
--- * 'pvName'
---
--- * 'pvCalculatedDisplayType'
---
--- * 'pvSummarizeFunction'
-pivotValue
-    :: PivotValue
-pivotValue =
-  PivotValue'
-    { _pvSourceColumnOffSet = Nothing
-    , _pvFormula = Nothing
-    , _pvName = Nothing
-    , _pvCalculatedDisplayType = Nothing
-    , _pvSummarizeFunction = Nothing
-    }
-
-
--- | The column offset of the source range that this value reads from. For
--- example, if the source was \`C10:E15\`, a \`sourceColumnOffset\` of
--- \`0\` means this value refers to column \`C\`, whereas the offset \`1\`
--- would refer to column \`D\`.
-pvSourceColumnOffSet :: Lens' PivotValue (Maybe Int32)
-pvSourceColumnOffSet
-  = lens _pvSourceColumnOffSet
-      (\ s a -> s{_pvSourceColumnOffSet = a})
-      . mapping _Coerce
-
--- | A custom formula to calculate the value. The formula must start with an
--- \`=\` character.
-pvFormula :: Lens' PivotValue (Maybe Text)
-pvFormula
-  = lens _pvFormula (\ s a -> s{_pvFormula = a})
-
--- | A name to use for the value.
-pvName :: Lens' PivotValue (Maybe Text)
-pvName = lens _pvName (\ s a -> s{_pvName = a})
-
--- | If specified, indicates that pivot values should be displayed as the
--- result of a calculation with another pivot value. For example, if
--- calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the
--- pivot values are displayed as the percentage of the grand total. In the
--- Sheets UI, this is referred to as \"Show As\" in the value section of a
--- pivot table.
-pvCalculatedDisplayType :: Lens' PivotValue (Maybe PivotValueCalculatedDisplayType)
-pvCalculatedDisplayType
-  = lens _pvCalculatedDisplayType
-      (\ s a -> s{_pvCalculatedDisplayType = a})
-
--- | A function to summarize the value. If formula is set, the only supported
--- values are SUM and CUSTOM. If sourceColumnOffset is set, then \`CUSTOM\`
--- is not supported.
-pvSummarizeFunction :: Lens' PivotValue (Maybe PivotValueSummarizeFunction)
-pvSummarizeFunction
-  = lens _pvSummarizeFunction
-      (\ s a -> s{_pvSummarizeFunction = a})
-
-instance FromJSON PivotValue where
-        parseJSON
-          = withObject "PivotValue"
-              (\ o ->
-                 PivotValue' <$>
-                   (o .:? "sourceColumnOffset") <*> (o .:? "formula")
-                     <*> (o .:? "name")
-                     <*> (o .:? "calculatedDisplayType")
-                     <*> (o .:? "summarizeFunction"))
-
-instance ToJSON PivotValue where
-        toJSON PivotValue'{..}
-          = object
-              (catMaybes
-                 [("sourceColumnOffset" .=) <$> _pvSourceColumnOffSet,
-                  ("formula" .=) <$> _pvFormula,
-                  ("name" .=) <$> _pvName,
-                  ("calculatedDisplayType" .=) <$>
-                    _pvCalculatedDisplayType,
-                  ("summarizeFunction" .=) <$> _pvSummarizeFunction])
-
--- | Unmerges cells in the given range.
---
--- /See:/ 'unmergeCellsRequest' smart constructor.
-newtype UnmergeCellsRequest =
-  UnmergeCellsRequest'
-    { _ucrRange :: Maybe GridRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UnmergeCellsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucrRange'
-unmergeCellsRequest
-    :: UnmergeCellsRequest
-unmergeCellsRequest = UnmergeCellsRequest' {_ucrRange = Nothing}
-
-
--- | The range within which all cells should be unmerged. If the range spans
--- multiple merges, all will be unmerged. The range must not partially span
--- any merge.
-ucrRange :: Lens' UnmergeCellsRequest (Maybe GridRange)
-ucrRange = lens _ucrRange (\ s a -> s{_ucrRange = a})
-
-instance FromJSON UnmergeCellsRequest where
-        parseJSON
-          = withObject "UnmergeCellsRequest"
-              (\ o -> UnmergeCellsRequest' <$> (o .:? "range"))
-
-instance ToJSON UnmergeCellsRequest where
-        toJSON UnmergeCellsRequest'{..}
-          = object (catMaybes [("range" .=) <$> _ucrRange])
-
--- | Deletes the requested sheet.
---
--- /See:/ 'deleteSheetRequest' smart constructor.
-newtype DeleteSheetRequest =
-  DeleteSheetRequest'
-    { _dsrSheetId :: Maybe (Textual Int32)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteSheetRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsrSheetId'
-deleteSheetRequest
-    :: DeleteSheetRequest
-deleteSheetRequest = DeleteSheetRequest' {_dsrSheetId = Nothing}
-
-
--- | The ID of the sheet to delete.
-dsrSheetId :: Lens' DeleteSheetRequest (Maybe Int32)
-dsrSheetId
-  = lens _dsrSheetId (\ s a -> s{_dsrSheetId = a}) .
-      mapping _Coerce
-
-instance FromJSON DeleteSheetRequest where
-        parseJSON
-          = withObject "DeleteSheetRequest"
-              (\ o -> DeleteSheetRequest' <$> (o .:? "sheetId"))
-
-instance ToJSON DeleteSheetRequest where
-        toJSON DeleteSheetRequest'{..}
-          = object (catMaybes [("sheetId" .=) <$> _dsrSheetId])
-
--- | Creates a group over the specified range. If the requested range is a
--- superset of the range of an existing group G, then the depth of G is
--- incremented and this new group G\' has the depth of that group. For
--- example, a group [C:D, depth 1] + [B:E] results in groups [B:E, depth 1]
--- and [C:D, depth 2]. If the requested range is a subset of the range of
--- an existing group G, then the depth of the new group G\' becomes one
--- greater than the depth of G. For example, a group [B:E, depth 1] + [C:D]
--- results in groups [B:E, depth 1] and [C:D, depth 2]. If the requested
--- range starts before and ends within, or starts within and ends after,
--- the range of an existing group G, then the range of the existing group G
--- becomes the union of the ranges, and the new group G\' has depth one
--- greater than the depth of G and range as the intersection of the ranges.
--- For example, a group [B:D, depth 1] + [C:E] results in groups [B:E,
--- depth 1] and [C:D, depth 2].
---
--- /See:/ 'addDimensionGroupRequest' smart constructor.
-newtype AddDimensionGroupRequest =
-  AddDimensionGroupRequest'
-    { _adgrRange :: Maybe DimensionRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddDimensionGroupRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adgrRange'
-addDimensionGroupRequest
-    :: AddDimensionGroupRequest
-addDimensionGroupRequest = AddDimensionGroupRequest' {_adgrRange = Nothing}
-
-
--- | The range over which to create a group.
-adgrRange :: Lens' AddDimensionGroupRequest (Maybe DimensionRange)
-adgrRange
-  = lens _adgrRange (\ s a -> s{_adgrRange = a})
-
-instance FromJSON AddDimensionGroupRequest where
-        parseJSON
-          = withObject "AddDimensionGroupRequest"
-              (\ o ->
-                 AddDimensionGroupRequest' <$> (o .:? "range"))
-
-instance ToJSON AddDimensionGroupRequest where
-        toJSON AddDimensionGroupRequest'{..}
-          = object (catMaybes [("range" .=) <$> _adgrRange])
-
--- | Styles for a waterfall chart column.
---
--- /See:/ 'waterfallChartColumnStyle' smart constructor.
-data WaterfallChartColumnStyle =
-  WaterfallChartColumnStyle'
-    { _wColor :: !(Maybe Color)
-    , _wLabel :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'WaterfallChartColumnStyle' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wColor'
---
--- * 'wLabel'
-waterfallChartColumnStyle
-    :: WaterfallChartColumnStyle
-waterfallChartColumnStyle =
-  WaterfallChartColumnStyle' {_wColor = Nothing, _wLabel = Nothing}
-
-
--- | The color of the column.
-wColor :: Lens' WaterfallChartColumnStyle (Maybe Color)
-wColor = lens _wColor (\ s a -> s{_wColor = a})
-
--- | The label of the column\'s legend.
-wLabel :: Lens' WaterfallChartColumnStyle (Maybe Text)
-wLabel = lens _wLabel (\ s a -> s{_wLabel = a})
-
-instance FromJSON WaterfallChartColumnStyle where
-        parseJSON
-          = withObject "WaterfallChartColumnStyle"
-              (\ o ->
-                 WaterfallChartColumnStyle' <$>
-                   (o .:? "color") <*> (o .:? "label"))
-
-instance ToJSON WaterfallChartColumnStyle where
-        toJSON WaterfallChartColumnStyle'{..}
-          = object
-              (catMaybes
-                 [("color" .=) <$> _wColor, ("label" .=) <$> _wLabel])
-
--- | The Candlestick chart data, each containing the low, open, close, and
--- high values for a series.
---
--- /See:/ 'candlestickData' smart constructor.
-data CandlestickData =
-  CandlestickData'
-    { _cdLowSeries   :: !(Maybe CandlestickSeries)
-    , _cdHighSeries  :: !(Maybe CandlestickSeries)
-    , _cdOpenSeries  :: !(Maybe CandlestickSeries)
-    , _cdCloseSeries :: !(Maybe CandlestickSeries)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CandlestickData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdLowSeries'
---
--- * 'cdHighSeries'
---
--- * 'cdOpenSeries'
---
--- * 'cdCloseSeries'
-candlestickData
-    :: CandlestickData
-candlestickData =
-  CandlestickData'
-    { _cdLowSeries = Nothing
-    , _cdHighSeries = Nothing
-    , _cdOpenSeries = Nothing
-    , _cdCloseSeries = Nothing
-    }
-
-
--- | The range data (vertical axis) for the low\/minimum value for each
--- candle. This is the bottom of the candle\'s center line.
-cdLowSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
-cdLowSeries
-  = lens _cdLowSeries (\ s a -> s{_cdLowSeries = a})
-
--- | The range data (vertical axis) for the high\/maximum value for each
--- candle. This is the top of the candle\'s center line.
-cdHighSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
-cdHighSeries
-  = lens _cdHighSeries (\ s a -> s{_cdHighSeries = a})
-
--- | The range data (vertical axis) for the open\/initial value for each
--- candle. This is the bottom of the candle body. If less than the close
--- value the candle will be filled. Otherwise the candle will be hollow.
-cdOpenSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
-cdOpenSeries
-  = lens _cdOpenSeries (\ s a -> s{_cdOpenSeries = a})
-
--- | The range data (vertical axis) for the close\/final value for each
--- candle. This is the top of the candle body. If greater than the open
--- value the candle will be filled. Otherwise the candle will be hollow.
-cdCloseSeries :: Lens' CandlestickData (Maybe CandlestickSeries)
-cdCloseSeries
-  = lens _cdCloseSeries
-      (\ s a -> s{_cdCloseSeries = a})
-
-instance FromJSON CandlestickData where
-        parseJSON
-          = withObject "CandlestickData"
-              (\ o ->
-                 CandlestickData' <$>
-                   (o .:? "lowSeries") <*> (o .:? "highSeries") <*>
-                     (o .:? "openSeries")
-                     <*> (o .:? "closeSeries"))
-
-instance ToJSON CandlestickData where
-        toJSON CandlestickData'{..}
-          = object
-              (catMaybes
-                 [("lowSeries" .=) <$> _cdLowSeries,
-                  ("highSeries" .=) <$> _cdHighSeries,
-                  ("openSeries" .=) <$> _cdOpenSeries,
-                  ("closeSeries" .=) <$> _cdCloseSeries])
-
--- | A banded (alternating colors) range in a sheet.
---
--- /See:/ 'bandedRange' smart constructor.
-data BandedRange =
-  BandedRange'
-    { _brBandedRangeId    :: !(Maybe (Textual Int32))
-    , _brRowProperties    :: !(Maybe BandingProperties)
-    , _brRange            :: !(Maybe GridRange)
-    , _brColumnProperties :: !(Maybe BandingProperties)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BandedRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'brBandedRangeId'
---
--- * 'brRowProperties'
---
--- * 'brRange'
---
--- * 'brColumnProperties'
-bandedRange
-    :: BandedRange
-bandedRange =
-  BandedRange'
-    { _brBandedRangeId = Nothing
-    , _brRowProperties = Nothing
-    , _brRange = Nothing
-    , _brColumnProperties = Nothing
-    }
-
-
--- | The id of the banded range.
-brBandedRangeId :: Lens' BandedRange (Maybe Int32)
-brBandedRangeId
-  = lens _brBandedRangeId
-      (\ s a -> s{_brBandedRangeId = a})
-      . mapping _Coerce
-
--- | Properties for row bands. These properties are applied on a row-by-row
--- basis throughout all the rows in the range. At least one of
--- row_properties or column_properties must be specified.
-brRowProperties :: Lens' BandedRange (Maybe BandingProperties)
-brRowProperties
-  = lens _brRowProperties
-      (\ s a -> s{_brRowProperties = a})
-
--- | The range over which these properties are applied.
-brRange :: Lens' BandedRange (Maybe GridRange)
-brRange = lens _brRange (\ s a -> s{_brRange = a})
-
--- | Properties for column bands. These properties are applied on a column-
--- by-column basis throughout all the columns in the range. At least one of
--- row_properties or column_properties must be specified.
-brColumnProperties :: Lens' BandedRange (Maybe BandingProperties)
-brColumnProperties
-  = lens _brColumnProperties
-      (\ s a -> s{_brColumnProperties = a})
-
-instance FromJSON BandedRange where
-        parseJSON
-          = withObject "BandedRange"
-              (\ o ->
-                 BandedRange' <$>
-                   (o .:? "bandedRangeId") <*> (o .:? "rowProperties")
-                     <*> (o .:? "range")
-                     <*> (o .:? "columnProperties"))
-
-instance ToJSON BandedRange where
-        toJSON BandedRange'{..}
-          = object
-              (catMaybes
-                 [("bandedRangeId" .=) <$> _brBandedRangeId,
-                  ("rowProperties" .=) <$> _brRowProperties,
-                  ("range" .=) <$> _brRange,
-                  ("columnProperties" .=) <$> _brColumnProperties])
-
--- | Updates the borders of a range. If a field is not set in the request,
--- that means the border remains as-is. For example, with two subsequent
--- UpdateBordersRequest: 1. range: A1:A5 \`{ top: RED, bottom: WHITE }\` 2.
--- range: A1:A5 \`{ left: BLUE }\` That would result in A1:A5 having a
--- borders of \`{ top: RED, bottom: WHITE, left: BLUE }\`. If you want to
--- clear a border, explicitly set the style to NONE.
---
--- /See:/ 'updateBOrdersRequest' smart constructor.
-data UpdateBOrdersRequest =
-  UpdateBOrdersRequest'
-    { _uborBottom          :: !(Maybe BOrder)
-    , _uborInnerHorizontal :: !(Maybe BOrder)
-    , _uborLeft            :: !(Maybe BOrder)
-    , _uborInnerVertical   :: !(Maybe BOrder)
-    , _uborRange           :: !(Maybe GridRange)
-    , _uborRight           :: !(Maybe BOrder)
-    , _uborTop             :: !(Maybe BOrder)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateBOrdersRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uborBottom'
---
--- * 'uborInnerHorizontal'
---
--- * 'uborLeft'
---
--- * 'uborInnerVertical'
---
--- * 'uborRange'
---
--- * 'uborRight'
---
--- * 'uborTop'
-updateBOrdersRequest
-    :: UpdateBOrdersRequest
-updateBOrdersRequest =
-  UpdateBOrdersRequest'
-    { _uborBottom = Nothing
-    , _uborInnerHorizontal = Nothing
-    , _uborLeft = Nothing
-    , _uborInnerVertical = Nothing
-    , _uborRange = Nothing
-    , _uborRight = Nothing
-    , _uborTop = Nothing
-    }
-
-
--- | The border to put at the bottom of the range.
-uborBottom :: Lens' UpdateBOrdersRequest (Maybe BOrder)
-uborBottom
-  = lens _uborBottom (\ s a -> s{_uborBottom = a})
-
--- | The horizontal border to put within the range.
-uborInnerHorizontal :: Lens' UpdateBOrdersRequest (Maybe BOrder)
-uborInnerHorizontal
-  = lens _uborInnerHorizontal
-      (\ s a -> s{_uborInnerHorizontal = a})
-
--- | The border to put at the left of the range.
-uborLeft :: Lens' UpdateBOrdersRequest (Maybe BOrder)
-uborLeft = lens _uborLeft (\ s a -> s{_uborLeft = a})
-
--- | The vertical border to put within the range.
-uborInnerVertical :: Lens' UpdateBOrdersRequest (Maybe BOrder)
-uborInnerVertical
-  = lens _uborInnerVertical
-      (\ s a -> s{_uborInnerVertical = a})
-
--- | The range whose borders should be updated.
-uborRange :: Lens' UpdateBOrdersRequest (Maybe GridRange)
-uborRange
-  = lens _uborRange (\ s a -> s{_uborRange = a})
-
--- | The border to put at the right of the range.
-uborRight :: Lens' UpdateBOrdersRequest (Maybe BOrder)
-uborRight
-  = lens _uborRight (\ s a -> s{_uborRight = a})
-
--- | The border to put at the top of the range.
-uborTop :: Lens' UpdateBOrdersRequest (Maybe BOrder)
-uborTop = lens _uborTop (\ s a -> s{_uborTop = a})
-
-instance FromJSON UpdateBOrdersRequest where
-        parseJSON
-          = withObject "UpdateBOrdersRequest"
-              (\ o ->
-                 UpdateBOrdersRequest' <$>
-                   (o .:? "bottom") <*> (o .:? "innerHorizontal") <*>
-                     (o .:? "left")
-                     <*> (o .:? "innerVertical")
-                     <*> (o .:? "range")
-                     <*> (o .:? "right")
-                     <*> (o .:? "top"))
-
-instance ToJSON UpdateBOrdersRequest where
-        toJSON UpdateBOrdersRequest'{..}
-          = object
-              (catMaybes
-                 [("bottom" .=) <$> _uborBottom,
-                  ("innerHorizontal" .=) <$> _uborInnerHorizontal,
-                  ("left" .=) <$> _uborLeft,
-                  ("innerVertical" .=) <$> _uborInnerVertical,
-                  ("range" .=) <$> _uborRange,
-                  ("right" .=) <$> _uborRight,
-                  ("top" .=) <$> _uborTop])
-
--- | The request for updating more than one range of values in a spreadsheet.
---
--- /See:/ 'batchUpdateValuesByDataFilterRequest' smart constructor.
-data BatchUpdateValuesByDataFilterRequest =
-  BatchUpdateValuesByDataFilterRequest'
-    { _buvbdfrData                         :: !(Maybe [DataFilterValueRange])
-    , _buvbdfrValueInputOption             :: !(Maybe BatchUpdateValuesByDataFilterRequestValueInputOption)
-    , _buvbdfrIncludeValuesInResponse      :: !(Maybe Bool)
-    , _buvbdfrResponseDateTimeRenderOption :: !(Maybe BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption)
-    , _buvbdfrResponseValueRenderOption    :: !(Maybe BatchUpdateValuesByDataFilterRequestResponseValueRenderOption)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchUpdateValuesByDataFilterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'buvbdfrData'
---
--- * 'buvbdfrValueInputOption'
---
--- * 'buvbdfrIncludeValuesInResponse'
---
--- * 'buvbdfrResponseDateTimeRenderOption'
---
--- * 'buvbdfrResponseValueRenderOption'
-batchUpdateValuesByDataFilterRequest
-    :: BatchUpdateValuesByDataFilterRequest
-batchUpdateValuesByDataFilterRequest =
-  BatchUpdateValuesByDataFilterRequest'
-    { _buvbdfrData = Nothing
-    , _buvbdfrValueInputOption = Nothing
-    , _buvbdfrIncludeValuesInResponse = Nothing
-    , _buvbdfrResponseDateTimeRenderOption = Nothing
-    , _buvbdfrResponseValueRenderOption = Nothing
-    }
-
-
--- | The new values to apply to the spreadsheet. If more than one range is
--- matched by the specified DataFilter the specified values will be applied
--- to all of those ranges.
-buvbdfrData :: Lens' BatchUpdateValuesByDataFilterRequest [DataFilterValueRange]
-buvbdfrData
-  = lens _buvbdfrData (\ s a -> s{_buvbdfrData = a}) .
-      _Default
-      . _Coerce
-
--- | How the input data should be interpreted.
-buvbdfrValueInputOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestValueInputOption)
-buvbdfrValueInputOption
-  = lens _buvbdfrValueInputOption
-      (\ s a -> s{_buvbdfrValueInputOption = a})
-
--- | Determines if the update response should include the values of the cells
--- that were updated. By default, responses do not include the updated
--- values. The \`updatedData\` field within each of the
--- BatchUpdateValuesResponse.responses will contain the updated values. If
--- the range to write was larger than than the range actually written, the
--- response will include all values in the requested range (excluding
--- trailing empty rows and columns).
-buvbdfrIncludeValuesInResponse :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe Bool)
-buvbdfrIncludeValuesInResponse
-  = lens _buvbdfrIncludeValuesInResponse
-      (\ s a -> s{_buvbdfrIncludeValuesInResponse = a})
-
--- | Determines how dates, times, and durations in the response should be
--- rendered. This is ignored if response_value_render_option is
--- FORMATTED_VALUE. The default dateTime render option is
--- DateTimeRenderOption.SERIAL_NUMBER.
-buvbdfrResponseDateTimeRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseDateTimeRenderOption)
-buvbdfrResponseDateTimeRenderOption
-  = lens _buvbdfrResponseDateTimeRenderOption
-      (\ s a ->
-         s{_buvbdfrResponseDateTimeRenderOption = a})
-
--- | Determines how values in the response should be rendered. The default
--- render option is ValueRenderOption.FORMATTED_VALUE.
-buvbdfrResponseValueRenderOption :: Lens' BatchUpdateValuesByDataFilterRequest (Maybe BatchUpdateValuesByDataFilterRequestResponseValueRenderOption)
-buvbdfrResponseValueRenderOption
-  = lens _buvbdfrResponseValueRenderOption
-      (\ s a -> s{_buvbdfrResponseValueRenderOption = a})
-
-instance FromJSON
-           BatchUpdateValuesByDataFilterRequest
-         where
-        parseJSON
-          = withObject "BatchUpdateValuesByDataFilterRequest"
-              (\ o ->
-                 BatchUpdateValuesByDataFilterRequest' <$>
-                   (o .:? "data" .!= mempty) <*>
-                     (o .:? "valueInputOption")
-                     <*> (o .:? "includeValuesInResponse")
-                     <*> (o .:? "responseDateTimeRenderOption")
-                     <*> (o .:? "responseValueRenderOption"))
-
-instance ToJSON BatchUpdateValuesByDataFilterRequest
-         where
-        toJSON BatchUpdateValuesByDataFilterRequest'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _buvbdfrData,
-                  ("valueInputOption" .=) <$> _buvbdfrValueInputOption,
-                  ("includeValuesInResponse" .=) <$>
-                    _buvbdfrIncludeValuesInResponse,
-                  ("responseDateTimeRenderOption" .=) <$>
-                    _buvbdfrResponseDateTimeRenderOption,
-                  ("responseValueRenderOption" .=) <$>
-                    _buvbdfrResponseValueRenderOption])
-
--- | A chart embedded in a sheet.
---
--- /See:/ 'embeddedChart' smart constructor.
-data EmbeddedChart =
-  EmbeddedChart'
-    { _ecSpec     :: !(Maybe ChartSpec)
-    , _ecPosition :: !(Maybe EmbeddedObjectPosition)
-    , _ecChartId  :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EmbeddedChart' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ecSpec'
---
--- * 'ecPosition'
---
--- * 'ecChartId'
-embeddedChart
-    :: EmbeddedChart
-embeddedChart =
-  EmbeddedChart'
-    {_ecSpec = Nothing, _ecPosition = Nothing, _ecChartId = Nothing}
-
-
--- | The specification of the chart.
-ecSpec :: Lens' EmbeddedChart (Maybe ChartSpec)
-ecSpec = lens _ecSpec (\ s a -> s{_ecSpec = a})
-
--- | The position of the chart.
-ecPosition :: Lens' EmbeddedChart (Maybe EmbeddedObjectPosition)
-ecPosition
-  = lens _ecPosition (\ s a -> s{_ecPosition = a})
-
--- | The ID of the chart.
-ecChartId :: Lens' EmbeddedChart (Maybe Int32)
-ecChartId
-  = lens _ecChartId (\ s a -> s{_ecChartId = a}) .
-      mapping _Coerce
-
-instance FromJSON EmbeddedChart where
-        parseJSON
-          = withObject "EmbeddedChart"
-              (\ o ->
-                 EmbeddedChart' <$>
-                   (o .:? "spec") <*> (o .:? "position") <*>
-                     (o .:? "chartId"))
-
-instance ToJSON EmbeddedChart where
-        toJSON EmbeddedChart'{..}
-          = object
-              (catMaybes
-                 [("spec" .=) <$> _ecSpec,
-                  ("position" .=) <$> _ecPosition,
-                  ("chartId" .=) <$> _ecChartId])
-
--- | Data about each cell in a row.
---
--- /See:/ 'rowData' smart constructor.
-newtype RowData =
-  RowData'
-    { _rdValues :: Maybe [CellData]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RowData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rdValues'
-rowData
-    :: RowData
-rowData = RowData' {_rdValues = Nothing}
-
-
--- | The values in the row, one per column.
-rdValues :: Lens' RowData [CellData]
-rdValues
-  = lens _rdValues (\ s a -> s{_rdValues = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON RowData where
-        parseJSON
-          = withObject "RowData"
-              (\ o -> RowData' <$> (o .:? "values" .!= mempty))
-
-instance ToJSON RowData where
-        toJSON RowData'{..}
-          = object (catMaybes [("values" .=) <$> _rdValues])
-
--- | The editors of a protected range.
---
--- /See:/ 'editors' smart constructor.
-data Editors =
-  Editors'
-    { _eGroups             :: !(Maybe [Text])
-    , _eUsers              :: !(Maybe [Text])
-    , _eDomainUsersCanEdit :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Editors' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eGroups'
---
--- * 'eUsers'
---
--- * 'eDomainUsersCanEdit'
-editors
-    :: Editors
-editors =
-  Editors'
-    {_eGroups = Nothing, _eUsers = Nothing, _eDomainUsersCanEdit = Nothing}
-
-
--- | The email addresses of groups with edit access to the protected range.
-eGroups :: Lens' Editors [Text]
-eGroups
-  = lens _eGroups (\ s a -> s{_eGroups = a}) . _Default
-      . _Coerce
-
--- | The email addresses of users with edit access to the protected range.
-eUsers :: Lens' Editors [Text]
-eUsers
-  = lens _eUsers (\ s a -> s{_eUsers = a}) . _Default .
-      _Coerce
-
--- | True if anyone in the document\'s domain has edit access to the
--- protected range. Domain protection is only supported on documents within
--- a domain.
-eDomainUsersCanEdit :: Lens' Editors (Maybe Bool)
-eDomainUsersCanEdit
-  = lens _eDomainUsersCanEdit
-      (\ s a -> s{_eDomainUsersCanEdit = a})
-
-instance FromJSON Editors where
-        parseJSON
-          = withObject "Editors"
-              (\ o ->
-                 Editors' <$>
-                   (o .:? "groups" .!= mempty) <*>
-                     (o .:? "users" .!= mempty)
-                     <*> (o .:? "domainUsersCanEdit"))
-
-instance ToJSON Editors where
-        toJSON Editors'{..}
-          = object
-              (catMaybes
-                 [("groups" .=) <$> _eGroups,
-                  ("users" .=) <$> _eUsers,
-                  ("domainUsersCanEdit" .=) <$> _eDomainUsersCanEdit])
-
--- | A pivot table.
---
--- /See:/ 'pivotTable' smart constructor.
-data PivotTable =
-  PivotTable'
-    { _ptValues      :: !(Maybe [PivotValue])
-    , _ptValueLayout :: !(Maybe PivotTableValueLayout)
-    , _ptRows        :: !(Maybe [PivotGroup])
-    , _ptSource      :: !(Maybe GridRange)
-    , _ptColumns     :: !(Maybe [PivotGroup])
-    , _ptCriteria    :: !(Maybe PivotTableCriteria)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PivotTable' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ptValues'
---
--- * 'ptValueLayout'
---
--- * 'ptRows'
---
--- * 'ptSource'
---
--- * 'ptColumns'
---
--- * 'ptCriteria'
-pivotTable
-    :: PivotTable
-pivotTable =
-  PivotTable'
-    { _ptValues = Nothing
-    , _ptValueLayout = Nothing
-    , _ptRows = Nothing
-    , _ptSource = Nothing
-    , _ptColumns = Nothing
-    , _ptCriteria = Nothing
-    }
-
-
--- | A list of values to include in the pivot table.
-ptValues :: Lens' PivotTable [PivotValue]
-ptValues
-  = lens _ptValues (\ s a -> s{_ptValues = a}) .
-      _Default
-      . _Coerce
-
--- | Whether values should be listed horizontally (as columns) or vertically
--- (as rows).
-ptValueLayout :: Lens' PivotTable (Maybe PivotTableValueLayout)
-ptValueLayout
-  = lens _ptValueLayout
-      (\ s a -> s{_ptValueLayout = a})
-
--- | Each row grouping in the pivot table.
-ptRows :: Lens' PivotTable [PivotGroup]
-ptRows
-  = lens _ptRows (\ s a -> s{_ptRows = a}) . _Default .
-      _Coerce
-
--- | The range the pivot table is reading data from.
-ptSource :: Lens' PivotTable (Maybe GridRange)
-ptSource = lens _ptSource (\ s a -> s{_ptSource = a})
-
--- | Each column grouping in the pivot table.
-ptColumns :: Lens' PivotTable [PivotGroup]
-ptColumns
-  = lens _ptColumns (\ s a -> s{_ptColumns = a}) .
-      _Default
-      . _Coerce
-
--- | An optional mapping of filters per source column offset. The filters are
--- applied before aggregating data into the pivot table. The map\'s key is
--- the column offset of the source range that you want to filter, and the
--- value is the criteria for that column. For example, if the source was
--- \`C10:E15\`, a key of \`0\` will have the filter for column \`C\`,
--- whereas the key \`1\` is for column \`D\`.
-ptCriteria :: Lens' PivotTable (Maybe PivotTableCriteria)
-ptCriteria
-  = lens _ptCriteria (\ s a -> s{_ptCriteria = a})
-
-instance FromJSON PivotTable where
-        parseJSON
-          = withObject "PivotTable"
-              (\ o ->
-                 PivotTable' <$>
-                   (o .:? "values" .!= mempty) <*> (o .:? "valueLayout")
-                     <*> (o .:? "rows" .!= mempty)
-                     <*> (o .:? "source")
-                     <*> (o .:? "columns" .!= mempty)
-                     <*> (o .:? "criteria"))
-
-instance ToJSON PivotTable where
-        toJSON PivotTable'{..}
-          = object
-              (catMaybes
-                 [("values" .=) <$> _ptValues,
-                  ("valueLayout" .=) <$> _ptValueLayout,
-                  ("rows" .=) <$> _ptRows, ("source" .=) <$> _ptSource,
-                  ("columns" .=) <$> _ptColumns,
-                  ("criteria" .=) <$> _ptCriteria])
-
--- | The position of an embedded object such as a chart.
---
--- /See:/ 'embeddedObjectPosition' smart constructor.
-data EmbeddedObjectPosition =
-  EmbeddedObjectPosition'
-    { _eopOverlayPosition :: !(Maybe OverlayPosition)
-    , _eopSheetId         :: !(Maybe (Textual Int32))
-    , _eopNewSheet        :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EmbeddedObjectPosition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eopOverlayPosition'
---
--- * 'eopSheetId'
---
--- * 'eopNewSheet'
-embeddedObjectPosition
-    :: EmbeddedObjectPosition
-embeddedObjectPosition =
-  EmbeddedObjectPosition'
-    { _eopOverlayPosition = Nothing
-    , _eopSheetId = Nothing
-    , _eopNewSheet = Nothing
-    }
-
-
--- | The position at which the object is overlaid on top of a grid.
-eopOverlayPosition :: Lens' EmbeddedObjectPosition (Maybe OverlayPosition)
-eopOverlayPosition
-  = lens _eopOverlayPosition
-      (\ s a -> s{_eopOverlayPosition = a})
-
--- | The sheet this is on. Set only if the embedded object is on its own
--- sheet. Must be non-negative.
-eopSheetId :: Lens' EmbeddedObjectPosition (Maybe Int32)
-eopSheetId
-  = lens _eopSheetId (\ s a -> s{_eopSheetId = a}) .
-      mapping _Coerce
-
--- | If true, the embedded object is put on a new sheet whose ID is chosen
--- for you. Used only when writing.
-eopNewSheet :: Lens' EmbeddedObjectPosition (Maybe Bool)
-eopNewSheet
-  = lens _eopNewSheet (\ s a -> s{_eopNewSheet = a})
-
-instance FromJSON EmbeddedObjectPosition where
-        parseJSON
-          = withObject "EmbeddedObjectPosition"
-              (\ o ->
-                 EmbeddedObjectPosition' <$>
-                   (o .:? "overlayPosition") <*> (o .:? "sheetId") <*>
-                     (o .:? "newSheet"))
-
-instance ToJSON EmbeddedObjectPosition where
-        toJSON EmbeddedObjectPosition'{..}
-          = object
-              (catMaybes
-                 [("overlayPosition" .=) <$> _eopOverlayPosition,
-                  ("sheetId" .=) <$> _eopSheetId,
-                  ("newSheet" .=) <$> _eopNewSheet])
-
--- | The default filter associated with a sheet.
---
--- /See:/ 'basicFilter' smart constructor.
-data BasicFilter =
-  BasicFilter'
-    { _bfSortSpecs :: !(Maybe [SortSpec])
-    , _bfRange     :: !(Maybe GridRange)
-    , _bfCriteria  :: !(Maybe BasicFilterCriteria)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BasicFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bfSortSpecs'
---
--- * 'bfRange'
---
--- * 'bfCriteria'
-basicFilter
-    :: BasicFilter
-basicFilter =
-  BasicFilter'
-    {_bfSortSpecs = Nothing, _bfRange = Nothing, _bfCriteria = Nothing}
-
-
--- | The sort order per column. Later specifications are used when values are
--- equal in the earlier specifications.
-bfSortSpecs :: Lens' BasicFilter [SortSpec]
-bfSortSpecs
-  = lens _bfSortSpecs (\ s a -> s{_bfSortSpecs = a}) .
-      _Default
-      . _Coerce
-
--- | The range the filter covers.
-bfRange :: Lens' BasicFilter (Maybe GridRange)
-bfRange = lens _bfRange (\ s a -> s{_bfRange = a})
-
--- | The criteria for showing\/hiding values per column. The map\'s key is
--- the column index, and the value is the criteria for that column.
-bfCriteria :: Lens' BasicFilter (Maybe BasicFilterCriteria)
-bfCriteria
-  = lens _bfCriteria (\ s a -> s{_bfCriteria = a})
-
-instance FromJSON BasicFilter where
-        parseJSON
-          = withObject "BasicFilter"
-              (\ o ->
-                 BasicFilter' <$>
-                   (o .:? "sortSpecs" .!= mempty) <*> (o .:? "range")
-                     <*> (o .:? "criteria"))
-
-instance ToJSON BasicFilter where
-        toJSON BasicFilter'{..}
-          = object
-              (catMaybes
-                 [("sortSpecs" .=) <$> _bfSortSpecs,
-                  ("range" .=) <$> _bfRange,
-                  ("criteria" .=) <$> _bfCriteria])
-
--- | Splits a column of text into multiple columns, based on a delimiter in
--- each cell.
---
--- /See:/ 'textToColumnsRequest' smart constructor.
-data TextToColumnsRequest =
-  TextToColumnsRequest'
-    { _ttcrDelimiterType :: !(Maybe TextToColumnsRequestDelimiterType)
-    , _ttcrSource        :: !(Maybe GridRange)
-    , _ttcrDelimiter     :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TextToColumnsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ttcrDelimiterType'
---
--- * 'ttcrSource'
---
--- * 'ttcrDelimiter'
-textToColumnsRequest
-    :: TextToColumnsRequest
-textToColumnsRequest =
-  TextToColumnsRequest'
-    { _ttcrDelimiterType = Nothing
-    , _ttcrSource = Nothing
-    , _ttcrDelimiter = Nothing
-    }
-
-
--- | The delimiter type to use.
-ttcrDelimiterType :: Lens' TextToColumnsRequest (Maybe TextToColumnsRequestDelimiterType)
-ttcrDelimiterType
-  = lens _ttcrDelimiterType
-      (\ s a -> s{_ttcrDelimiterType = a})
-
--- | The source data range. This must span exactly one column.
-ttcrSource :: Lens' TextToColumnsRequest (Maybe GridRange)
-ttcrSource
-  = lens _ttcrSource (\ s a -> s{_ttcrSource = a})
-
--- | The delimiter to use. Used only if delimiterType is CUSTOM.
-ttcrDelimiter :: Lens' TextToColumnsRequest (Maybe Text)
-ttcrDelimiter
-  = lens _ttcrDelimiter
-      (\ s a -> s{_ttcrDelimiter = a})
-
-instance FromJSON TextToColumnsRequest where
-        parseJSON
-          = withObject "TextToColumnsRequest"
-              (\ o ->
-                 TextToColumnsRequest' <$>
-                   (o .:? "delimiterType") <*> (o .:? "source") <*>
-                     (o .:? "delimiter"))
-
-instance ToJSON TextToColumnsRequest where
-        toJSON TextToColumnsRequest'{..}
-          = object
-              (catMaybes
-                 [("delimiterType" .=) <$> _ttcrDelimiterType,
-                  ("source" .=) <$> _ttcrSource,
-                  ("delimiter" .=) <$> _ttcrDelimiter])
-
--- | The request for retrieving a Spreadsheet.
---
--- /See:/ 'getSpreadsheetByDataFilterRequest' smart constructor.
-data GetSpreadsheetByDataFilterRequest =
-  GetSpreadsheetByDataFilterRequest'
-    { _gsbdfrDataFilters     :: !(Maybe [DataFilter])
-    , _gsbdfrIncludeGridData :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetSpreadsheetByDataFilterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gsbdfrDataFilters'
---
--- * 'gsbdfrIncludeGridData'
-getSpreadsheetByDataFilterRequest
-    :: GetSpreadsheetByDataFilterRequest
-getSpreadsheetByDataFilterRequest =
-  GetSpreadsheetByDataFilterRequest'
-    {_gsbdfrDataFilters = Nothing, _gsbdfrIncludeGridData = Nothing}
-
-
--- | The DataFilters used to select which ranges to retrieve from the
--- spreadsheet.
-gsbdfrDataFilters :: Lens' GetSpreadsheetByDataFilterRequest [DataFilter]
-gsbdfrDataFilters
-  = lens _gsbdfrDataFilters
-      (\ s a -> s{_gsbdfrDataFilters = a})
-      . _Default
-      . _Coerce
-
--- | True if grid data should be returned. This parameter is ignored if a
--- field mask was set in the request.
-gsbdfrIncludeGridData :: Lens' GetSpreadsheetByDataFilterRequest (Maybe Bool)
-gsbdfrIncludeGridData
-  = lens _gsbdfrIncludeGridData
-      (\ s a -> s{_gsbdfrIncludeGridData = a})
-
-instance FromJSON GetSpreadsheetByDataFilterRequest
-         where
-        parseJSON
-          = withObject "GetSpreadsheetByDataFilterRequest"
-              (\ o ->
-                 GetSpreadsheetByDataFilterRequest' <$>
-                   (o .:? "dataFilters" .!= mempty) <*>
-                     (o .:? "includeGridData"))
-
-instance ToJSON GetSpreadsheetByDataFilterRequest
-         where
-        toJSON GetSpreadsheetByDataFilterRequest'{..}
-          = object
-              (catMaybes
-                 [("dataFilters" .=) <$> _gsbdfrDataFilters,
-                  ("includeGridData" .=) <$> _gsbdfrIncludeGridData])
-
--- | The request for updating any aspect of a spreadsheet.
---
--- /See:/ 'batchUpdateSpreadsheetRequest' smart constructor.
-data BatchUpdateSpreadsheetRequest =
-  BatchUpdateSpreadsheetRequest'
-    { _busrResponseIncludeGridData      :: !(Maybe Bool)
-    , _busrResponseRanges               :: !(Maybe [Text])
-    , _busrRequests                     :: !(Maybe [Request'])
-    , _busrIncludeSpreadsheetInResponse :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchUpdateSpreadsheetRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'busrResponseIncludeGridData'
---
--- * 'busrResponseRanges'
---
--- * 'busrRequests'
---
--- * 'busrIncludeSpreadsheetInResponse'
-batchUpdateSpreadsheetRequest
-    :: BatchUpdateSpreadsheetRequest
-batchUpdateSpreadsheetRequest =
-  BatchUpdateSpreadsheetRequest'
-    { _busrResponseIncludeGridData = Nothing
-    , _busrResponseRanges = Nothing
-    , _busrRequests = Nothing
-    , _busrIncludeSpreadsheetInResponse = Nothing
-    }
-
-
--- | True if grid data should be returned. Meaningful only if if
--- include_spreadsheet_in_response is \'true\'. This parameter is ignored
--- if a field mask was set in the request.
-busrResponseIncludeGridData :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)
-busrResponseIncludeGridData
-  = lens _busrResponseIncludeGridData
-      (\ s a -> s{_busrResponseIncludeGridData = a})
-
--- | Limits the ranges included in the response spreadsheet. Meaningful only
--- if include_spreadsheet_response is \'true\'.
-busrResponseRanges :: Lens' BatchUpdateSpreadsheetRequest [Text]
-busrResponseRanges
-  = lens _busrResponseRanges
-      (\ s a -> s{_busrResponseRanges = a})
-      . _Default
-      . _Coerce
-
--- | A list of updates to apply to the spreadsheet. Requests will be applied
--- in the order they are specified. If any request is not valid, no
--- requests will be applied.
-busrRequests :: Lens' BatchUpdateSpreadsheetRequest [Request']
-busrRequests
-  = lens _busrRequests (\ s a -> s{_busrRequests = a})
-      . _Default
-      . _Coerce
-
--- | Determines if the update response should include the spreadsheet
--- resource.
-busrIncludeSpreadsheetInResponse :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)
-busrIncludeSpreadsheetInResponse
-  = lens _busrIncludeSpreadsheetInResponse
-      (\ s a -> s{_busrIncludeSpreadsheetInResponse = a})
-
-instance FromJSON BatchUpdateSpreadsheetRequest where
-        parseJSON
-          = withObject "BatchUpdateSpreadsheetRequest"
-              (\ o ->
-                 BatchUpdateSpreadsheetRequest' <$>
-                   (o .:? "responseIncludeGridData") <*>
-                     (o .:? "responseRanges" .!= mempty)
-                     <*> (o .:? "requests" .!= mempty)
-                     <*> (o .:? "includeSpreadsheetInResponse"))
-
-instance ToJSON BatchUpdateSpreadsheetRequest where
-        toJSON BatchUpdateSpreadsheetRequest'{..}
-          = object
-              (catMaybes
-                 [("responseIncludeGridData" .=) <$>
-                    _busrResponseIncludeGridData,
-                  ("responseRanges" .=) <$> _busrResponseRanges,
-                  ("requests" .=) <$> _busrRequests,
-                  ("includeSpreadsheetInResponse" .=) <$>
-                    _busrIncludeSpreadsheetInResponse])
-
--- | The response when updating a range of values in a spreadsheet.
---
--- /See:/ 'updateValuesResponse' smart constructor.
-data UpdateValuesResponse =
-  UpdateValuesResponse'
-    { _uvrUpdatedCells   :: !(Maybe (Textual Int32))
-    , _uvrSpreadsheetId  :: !(Maybe Text)
-    , _uvrUpdatedRows    :: !(Maybe (Textual Int32))
-    , _uvrUpdatedRange   :: !(Maybe Text)
-    , _uvrUpdatedData    :: !(Maybe ValueRange)
-    , _uvrUpdatedColumns :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateValuesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uvrUpdatedCells'
---
--- * 'uvrSpreadsheetId'
---
--- * 'uvrUpdatedRows'
---
--- * 'uvrUpdatedRange'
---
--- * 'uvrUpdatedData'
---
--- * 'uvrUpdatedColumns'
-updateValuesResponse
-    :: UpdateValuesResponse
-updateValuesResponse =
-  UpdateValuesResponse'
-    { _uvrUpdatedCells = Nothing
-    , _uvrSpreadsheetId = Nothing
-    , _uvrUpdatedRows = Nothing
-    , _uvrUpdatedRange = Nothing
-    , _uvrUpdatedData = Nothing
-    , _uvrUpdatedColumns = Nothing
-    }
-
-
--- | The number of cells updated.
-uvrUpdatedCells :: Lens' UpdateValuesResponse (Maybe Int32)
-uvrUpdatedCells
-  = lens _uvrUpdatedCells
-      (\ s a -> s{_uvrUpdatedCells = a})
-      . mapping _Coerce
-
--- | The spreadsheet the updates were applied to.
-uvrSpreadsheetId :: Lens' UpdateValuesResponse (Maybe Text)
-uvrSpreadsheetId
-  = lens _uvrSpreadsheetId
-      (\ s a -> s{_uvrSpreadsheetId = a})
-
--- | The number of rows where at least one cell in the row was updated.
-uvrUpdatedRows :: Lens' UpdateValuesResponse (Maybe Int32)
-uvrUpdatedRows
-  = lens _uvrUpdatedRows
-      (\ s a -> s{_uvrUpdatedRows = a})
-      . mapping _Coerce
-
--- | The range (in A1 notation) that updates were applied to.
-uvrUpdatedRange :: Lens' UpdateValuesResponse (Maybe Text)
-uvrUpdatedRange
-  = lens _uvrUpdatedRange
-      (\ s a -> s{_uvrUpdatedRange = a})
-
--- | The values of the cells after updates were applied. This is only
--- included if the request\'s \`includeValuesInResponse\` field was
--- \`true\`.
-uvrUpdatedData :: Lens' UpdateValuesResponse (Maybe ValueRange)
-uvrUpdatedData
-  = lens _uvrUpdatedData
-      (\ s a -> s{_uvrUpdatedData = a})
-
--- | The number of columns where at least one cell in the column was updated.
-uvrUpdatedColumns :: Lens' UpdateValuesResponse (Maybe Int32)
-uvrUpdatedColumns
-  = lens _uvrUpdatedColumns
-      (\ s a -> s{_uvrUpdatedColumns = a})
-      . mapping _Coerce
-
-instance FromJSON UpdateValuesResponse where
-        parseJSON
-          = withObject "UpdateValuesResponse"
-              (\ o ->
-                 UpdateValuesResponse' <$>
-                   (o .:? "updatedCells") <*> (o .:? "spreadsheetId")
-                     <*> (o .:? "updatedRows")
-                     <*> (o .:? "updatedRange")
-                     <*> (o .:? "updatedData")
-                     <*> (o .:? "updatedColumns"))
-
-instance ToJSON UpdateValuesResponse where
-        toJSON UpdateValuesResponse'{..}
-          = object
-              (catMaybes
-                 [("updatedCells" .=) <$> _uvrUpdatedCells,
-                  ("spreadsheetId" .=) <$> _uvrSpreadsheetId,
-                  ("updatedRows" .=) <$> _uvrUpdatedRows,
-                  ("updatedRange" .=) <$> _uvrUpdatedRange,
-                  ("updatedData" .=) <$> _uvrUpdatedData,
-                  ("updatedColumns" .=) <$> _uvrUpdatedColumns])
-
--- | The result of deleting a group.
---
--- /See:/ 'deleteDimensionGroupResponse' smart constructor.
-newtype DeleteDimensionGroupResponse =
-  DeleteDimensionGroupResponse'
-    { _ddgrDimensionGroups :: Maybe [DimensionGroup]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteDimensionGroupResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddgrDimensionGroups'
-deleteDimensionGroupResponse
-    :: DeleteDimensionGroupResponse
-deleteDimensionGroupResponse =
-  DeleteDimensionGroupResponse' {_ddgrDimensionGroups = Nothing}
-
-
--- | All groups of a dimension after deleting a group from that dimension.
-ddgrDimensionGroups :: Lens' DeleteDimensionGroupResponse [DimensionGroup]
-ddgrDimensionGroups
-  = lens _ddgrDimensionGroups
-      (\ s a -> s{_ddgrDimensionGroups = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON DeleteDimensionGroupResponse where
-        parseJSON
-          = withObject "DeleteDimensionGroupResponse"
-              (\ o ->
-                 DeleteDimensionGroupResponse' <$>
-                   (o .:? "dimensionGroups" .!= mempty))
-
-instance ToJSON DeleteDimensionGroupResponse where
-        toJSON DeleteDimensionGroupResponse'{..}
-          = object
-              (catMaybes
-                 [("dimensionGroups" .=) <$> _ddgrDimensionGroups])
-
--- | The request to copy a sheet across spreadsheets.
---
--- /See:/ 'copySheetToAnotherSpreadsheetRequest' smart constructor.
-newtype CopySheetToAnotherSpreadsheetRequest =
-  CopySheetToAnotherSpreadsheetRequest'
-    { _cstasrDestinationSpreadsheetId :: Maybe Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CopySheetToAnotherSpreadsheetRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cstasrDestinationSpreadsheetId'
-copySheetToAnotherSpreadsheetRequest
-    :: CopySheetToAnotherSpreadsheetRequest
-copySheetToAnotherSpreadsheetRequest =
-  CopySheetToAnotherSpreadsheetRequest'
-    {_cstasrDestinationSpreadsheetId = Nothing}
-
-
--- | The ID of the spreadsheet to copy the sheet to.
-cstasrDestinationSpreadsheetId :: Lens' CopySheetToAnotherSpreadsheetRequest (Maybe Text)
-cstasrDestinationSpreadsheetId
-  = lens _cstasrDestinationSpreadsheetId
-      (\ s a -> s{_cstasrDestinationSpreadsheetId = a})
-
-instance FromJSON
-           CopySheetToAnotherSpreadsheetRequest
-         where
-        parseJSON
-          = withObject "CopySheetToAnotherSpreadsheetRequest"
-              (\ o ->
-                 CopySheetToAnotherSpreadsheetRequest' <$>
-                   (o .:? "destinationSpreadsheetId"))
-
-instance ToJSON CopySheetToAnotherSpreadsheetRequest
-         where
-        toJSON CopySheetToAnotherSpreadsheetRequest'{..}
-          = object
-              (catMaybes
-                 [("destinationSpreadsheetId" .=) <$>
-                    _cstasrDestinationSpreadsheetId])
-
--- | Adds a filter view.
---
--- /See:/ 'addFilterViewRequest' smart constructor.
-newtype AddFilterViewRequest =
-  AddFilterViewRequest'
-    { _aFilter :: Maybe FilterView
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddFilterViewRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aFilter'
-addFilterViewRequest
-    :: AddFilterViewRequest
-addFilterViewRequest = AddFilterViewRequest' {_aFilter = Nothing}
-
-
--- | The filter to add. The filterViewId field is optional; if one is not
--- set, an id will be randomly generated. (It is an error to specify the ID
--- of a filter that already exists.)
-aFilter :: Lens' AddFilterViewRequest (Maybe FilterView)
-aFilter = lens _aFilter (\ s a -> s{_aFilter = a})
-
-instance FromJSON AddFilterViewRequest where
-        parseJSON
-          = withObject "AddFilterViewRequest"
-              (\ o -> AddFilterViewRequest' <$> (o .:? "filter"))
-
-instance ToJSON AddFilterViewRequest where
-        toJSON AddFilterViewRequest'{..}
-          = object (catMaybes [("filter" .=) <$> _aFilter])
-
--- | Metadata about a value in a pivot grouping.
---
--- /See:/ 'pivotGroupValueMetadata' smart constructor.
-data PivotGroupValueMetadata =
-  PivotGroupValueMetadata'
-    { _pgvmValue     :: !(Maybe ExtendedValue)
-    , _pgvmCollapsed :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PivotGroupValueMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pgvmValue'
---
--- * 'pgvmCollapsed'
-pivotGroupValueMetadata
-    :: PivotGroupValueMetadata
-pivotGroupValueMetadata =
-  PivotGroupValueMetadata' {_pgvmValue = Nothing, _pgvmCollapsed = Nothing}
-
-
--- | The calculated value the metadata corresponds to. (Note that
--- formulaValue is not valid, because the values will be calculated.)
-pgvmValue :: Lens' PivotGroupValueMetadata (Maybe ExtendedValue)
-pgvmValue
-  = lens _pgvmValue (\ s a -> s{_pgvmValue = a})
-
--- | True if the data corresponding to the value is collapsed.
-pgvmCollapsed :: Lens' PivotGroupValueMetadata (Maybe Bool)
-pgvmCollapsed
-  = lens _pgvmCollapsed
-      (\ s a -> s{_pgvmCollapsed = a})
-
-instance FromJSON PivotGroupValueMetadata where
-        parseJSON
-          = withObject "PivotGroupValueMetadata"
-              (\ o ->
-                 PivotGroupValueMetadata' <$>
-                   (o .:? "value") <*> (o .:? "collapsed"))
-
-instance ToJSON PivotGroupValueMetadata where
-        toJSON PivotGroupValueMetadata'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _pgvmValue,
-                  ("collapsed" .=) <$> _pgvmCollapsed])
-
--- | The response when clearing a range of values selected with DataFilters
--- in a spreadsheet.
---
--- /See:/ 'batchClearValuesByDataFilterResponse' smart constructor.
-data BatchClearValuesByDataFilterResponse =
-  BatchClearValuesByDataFilterResponse'
-    { _bcvbdfrClearedRanges :: !(Maybe [Text])
-    , _bcvbdfrSpreadsheetId :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchClearValuesByDataFilterResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bcvbdfrClearedRanges'
---
--- * 'bcvbdfrSpreadsheetId'
-batchClearValuesByDataFilterResponse
-    :: BatchClearValuesByDataFilterResponse
-batchClearValuesByDataFilterResponse =
-  BatchClearValuesByDataFilterResponse'
-    {_bcvbdfrClearedRanges = Nothing, _bcvbdfrSpreadsheetId = Nothing}
-
-
--- | The ranges that were cleared, in A1 notation. (If the requests were for
--- an unbounded range or a ranger larger than the bounds of the sheet, this
--- will be the actual ranges that were cleared, bounded to the sheet\'s
--- limits.)
-bcvbdfrClearedRanges :: Lens' BatchClearValuesByDataFilterResponse [Text]
-bcvbdfrClearedRanges
-  = lens _bcvbdfrClearedRanges
-      (\ s a -> s{_bcvbdfrClearedRanges = a})
-      . _Default
-      . _Coerce
-
--- | The spreadsheet the updates were applied to.
-bcvbdfrSpreadsheetId :: Lens' BatchClearValuesByDataFilterResponse (Maybe Text)
-bcvbdfrSpreadsheetId
-  = lens _bcvbdfrSpreadsheetId
-      (\ s a -> s{_bcvbdfrSpreadsheetId = a})
-
-instance FromJSON
-           BatchClearValuesByDataFilterResponse
-         where
-        parseJSON
-          = withObject "BatchClearValuesByDataFilterResponse"
-              (\ o ->
-                 BatchClearValuesByDataFilterResponse' <$>
-                   (o .:? "clearedRanges" .!= mempty) <*>
-                     (o .:? "spreadsheetId"))
-
-instance ToJSON BatchClearValuesByDataFilterResponse
-         where
-        toJSON BatchClearValuesByDataFilterResponse'{..}
-          = object
-              (catMaybes
-                 [("clearedRanges" .=) <$> _bcvbdfrClearedRanges,
-                  ("spreadsheetId" .=) <$> _bcvbdfrSpreadsheetId])
-
--- | A single series of data for a waterfall chart.
---
--- /See:/ 'waterfallChartSeries' smart constructor.
-data WaterfallChartSeries =
-  WaterfallChartSeries'
-    { _wcsData                 :: !(Maybe ChartData)
-    , _wcsCustomSubtotals      :: !(Maybe [WaterfallChartCustomSubtotal])
-    , _wcsNegativeColumnsStyle :: !(Maybe WaterfallChartColumnStyle)
-    , _wcsHideTrailingSubtotal :: !(Maybe Bool)
-    , _wcsSubtotalColumnsStyle :: !(Maybe WaterfallChartColumnStyle)
-    , _wcsPositiveColumnsStyle :: !(Maybe WaterfallChartColumnStyle)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'WaterfallChartSeries' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wcsData'
---
--- * 'wcsCustomSubtotals'
---
--- * 'wcsNegativeColumnsStyle'
---
--- * 'wcsHideTrailingSubtotal'
---
--- * 'wcsSubtotalColumnsStyle'
---
--- * 'wcsPositiveColumnsStyle'
-waterfallChartSeries
-    :: WaterfallChartSeries
-waterfallChartSeries =
-  WaterfallChartSeries'
-    { _wcsData = Nothing
-    , _wcsCustomSubtotals = Nothing
-    , _wcsNegativeColumnsStyle = Nothing
-    , _wcsHideTrailingSubtotal = Nothing
-    , _wcsSubtotalColumnsStyle = Nothing
-    , _wcsPositiveColumnsStyle = Nothing
-    }
-
-
--- | The data being visualized in this series.
-wcsData :: Lens' WaterfallChartSeries (Maybe ChartData)
-wcsData = lens _wcsData (\ s a -> s{_wcsData = a})
-
--- | Custom subtotal columns appearing in this series. The order in which
--- subtotals are defined is not significant. Only one subtotal may be
--- defined for each data point.
-wcsCustomSubtotals :: Lens' WaterfallChartSeries [WaterfallChartCustomSubtotal]
-wcsCustomSubtotals
-  = lens _wcsCustomSubtotals
-      (\ s a -> s{_wcsCustomSubtotals = a})
-      . _Default
-      . _Coerce
-
--- | Styles for all columns in this series with negative values.
-wcsNegativeColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)
-wcsNegativeColumnsStyle
-  = lens _wcsNegativeColumnsStyle
-      (\ s a -> s{_wcsNegativeColumnsStyle = a})
-
--- | True to hide the subtotal column from the end of the series. By default,
--- a subtotal column will appear at the end of each series. Setting this
--- field to true will hide that subtotal column for this series.
-wcsHideTrailingSubtotal :: Lens' WaterfallChartSeries (Maybe Bool)
-wcsHideTrailingSubtotal
-  = lens _wcsHideTrailingSubtotal
-      (\ s a -> s{_wcsHideTrailingSubtotal = a})
-
--- | Styles for all subtotal columns in this series.
-wcsSubtotalColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)
-wcsSubtotalColumnsStyle
-  = lens _wcsSubtotalColumnsStyle
-      (\ s a -> s{_wcsSubtotalColumnsStyle = a})
-
--- | Styles for all columns in this series with positive values.
-wcsPositiveColumnsStyle :: Lens' WaterfallChartSeries (Maybe WaterfallChartColumnStyle)
-wcsPositiveColumnsStyle
-  = lens _wcsPositiveColumnsStyle
-      (\ s a -> s{_wcsPositiveColumnsStyle = a})
-
-instance FromJSON WaterfallChartSeries where
-        parseJSON
-          = withObject "WaterfallChartSeries"
-              (\ o ->
-                 WaterfallChartSeries' <$>
-                   (o .:? "data") <*>
-                     (o .:? "customSubtotals" .!= mempty)
-                     <*> (o .:? "negativeColumnsStyle")
-                     <*> (o .:? "hideTrailingSubtotal")
-                     <*> (o .:? "subtotalColumnsStyle")
-                     <*> (o .:? "positiveColumnsStyle"))
-
-instance ToJSON WaterfallChartSeries where
-        toJSON WaterfallChartSeries'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _wcsData,
-                  ("customSubtotals" .=) <$> _wcsCustomSubtotals,
-                  ("negativeColumnsStyle" .=) <$>
-                    _wcsNegativeColumnsStyle,
-                  ("hideTrailingSubtotal" .=) <$>
-                    _wcsHideTrailingSubtotal,
-                  ("subtotalColumnsStyle" .=) <$>
-                    _wcsSubtotalColumnsStyle,
-                  ("positiveColumnsStyle" .=) <$>
-                    _wcsPositiveColumnsStyle])
-
--- | Updates all cells in a range with new data.
---
--- /See:/ 'updateCellsRequest' smart constructor.
-data UpdateCellsRequest =
-  UpdateCellsRequest'
-    { _updStart  :: !(Maybe GridCoordinate)
-    , _updRows   :: !(Maybe [RowData])
-    , _updRange  :: !(Maybe GridRange)
-    , _updFields :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateCellsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'updStart'
---
--- * 'updRows'
---
--- * 'updRange'
---
--- * 'updFields'
-updateCellsRequest
-    :: UpdateCellsRequest
-updateCellsRequest =
-  UpdateCellsRequest'
-    { _updStart = Nothing
-    , _updRows = Nothing
-    , _updRange = Nothing
-    , _updFields = Nothing
-    }
-
-
--- | The coordinate to start writing data at. Any number of rows and columns
--- (including a different number of columns per row) may be written.
-updStart :: Lens' UpdateCellsRequest (Maybe GridCoordinate)
-updStart = lens _updStart (\ s a -> s{_updStart = a})
-
--- | The data to write.
-updRows :: Lens' UpdateCellsRequest [RowData]
-updRows
-  = lens _updRows (\ s a -> s{_updRows = a}) . _Default
-      . _Coerce
-
--- | The range to write data to. If the data in rows does not cover the
--- entire requested range, the fields matching those set in fields will be
--- cleared.
-updRange :: Lens' UpdateCellsRequest (Maybe GridRange)
-updRange = lens _updRange (\ s a -> s{_updRange = a})
-
--- | The fields of CellData that should be updated. At least one field must
--- be specified. The root is the CellData; \'row.values.\' should not be
--- specified. A single \`\"*\"\` can be used as short-hand for listing
--- every field.
-updFields :: Lens' UpdateCellsRequest (Maybe GFieldMask)
-updFields
-  = lens _updFields (\ s a -> s{_updFields = a})
-
-instance FromJSON UpdateCellsRequest where
-        parseJSON
-          = withObject "UpdateCellsRequest"
-              (\ o ->
-                 UpdateCellsRequest' <$>
-                   (o .:? "start") <*> (o .:? "rows" .!= mempty) <*>
-                     (o .:? "range")
-                     <*> (o .:? "fields"))
-
-instance ToJSON UpdateCellsRequest where
-        toJSON UpdateCellsRequest'{..}
-          = object
-              (catMaybes
-                 [("start" .=) <$> _updStart,
-                  ("rows" .=) <$> _updRows, ("range" .=) <$> _updRange,
-                  ("fields" .=) <$> _updFields])
-
--- | The format of a cell.
---
--- /See:/ 'cellFormat' smart constructor.
-data CellFormat =
-  CellFormat'
-    { _cfBOrders              :: !(Maybe BOrders)
-    , _cfVerticalAlignment    :: !(Maybe CellFormatVerticalAlignment)
-    , _cfBackgRoundColor      :: !(Maybe Color)
-    , _cfTextRotation         :: !(Maybe TextRotation)
-    , _cfHyperlinkDisplayType :: !(Maybe CellFormatHyperlinkDisplayType)
-    , _cfWrapStrategy         :: !(Maybe CellFormatWrapStrategy)
-    , _cfNumberFormat         :: !(Maybe NumberFormat)
-    , _cfTextDirection        :: !(Maybe CellFormatTextDirection)
-    , _cfTextFormat           :: !(Maybe TextFormat)
-    , _cfHorizontalAlignment  :: !(Maybe CellFormatHorizontalAlignment)
-    , _cfPadding              :: !(Maybe Padding)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CellFormat' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cfBOrders'
---
--- * 'cfVerticalAlignment'
---
--- * 'cfBackgRoundColor'
---
--- * 'cfTextRotation'
---
--- * 'cfHyperlinkDisplayType'
---
--- * 'cfWrapStrategy'
---
--- * 'cfNumberFormat'
---
--- * 'cfTextDirection'
---
--- * 'cfTextFormat'
---
--- * 'cfHorizontalAlignment'
---
--- * 'cfPadding'
-cellFormat
-    :: CellFormat
-cellFormat =
-  CellFormat'
-    { _cfBOrders = Nothing
-    , _cfVerticalAlignment = Nothing
-    , _cfBackgRoundColor = Nothing
-    , _cfTextRotation = Nothing
-    , _cfHyperlinkDisplayType = Nothing
-    , _cfWrapStrategy = Nothing
-    , _cfNumberFormat = Nothing
-    , _cfTextDirection = Nothing
-    , _cfTextFormat = Nothing
-    , _cfHorizontalAlignment = Nothing
-    , _cfPadding = Nothing
-    }
-
-
--- | The borders of the cell.
-cfBOrders :: Lens' CellFormat (Maybe BOrders)
-cfBOrders
-  = lens _cfBOrders (\ s a -> s{_cfBOrders = a})
-
--- | The vertical alignment of the value in the cell.
-cfVerticalAlignment :: Lens' CellFormat (Maybe CellFormatVerticalAlignment)
-cfVerticalAlignment
-  = lens _cfVerticalAlignment
-      (\ s a -> s{_cfVerticalAlignment = a})
-
--- | The background color of the cell.
-cfBackgRoundColor :: Lens' CellFormat (Maybe Color)
-cfBackgRoundColor
-  = lens _cfBackgRoundColor
-      (\ s a -> s{_cfBackgRoundColor = a})
-
--- | The rotation applied to text in a cell
-cfTextRotation :: Lens' CellFormat (Maybe TextRotation)
-cfTextRotation
-  = lens _cfTextRotation
-      (\ s a -> s{_cfTextRotation = a})
-
--- | How a hyperlink, if it exists, should be displayed in the cell.
-cfHyperlinkDisplayType :: Lens' CellFormat (Maybe CellFormatHyperlinkDisplayType)
-cfHyperlinkDisplayType
-  = lens _cfHyperlinkDisplayType
-      (\ s a -> s{_cfHyperlinkDisplayType = a})
-
--- | The wrap strategy for the value in the cell.
-cfWrapStrategy :: Lens' CellFormat (Maybe CellFormatWrapStrategy)
-cfWrapStrategy
-  = lens _cfWrapStrategy
-      (\ s a -> s{_cfWrapStrategy = a})
-
--- | A format describing how number values should be represented to the user.
-cfNumberFormat :: Lens' CellFormat (Maybe NumberFormat)
-cfNumberFormat
-  = lens _cfNumberFormat
-      (\ s a -> s{_cfNumberFormat = a})
-
--- | The direction of the text in the cell.
-cfTextDirection :: Lens' CellFormat (Maybe CellFormatTextDirection)
-cfTextDirection
-  = lens _cfTextDirection
-      (\ s a -> s{_cfTextDirection = a})
-
--- | The format of the text in the cell (unless overridden by a format run).
-cfTextFormat :: Lens' CellFormat (Maybe TextFormat)
-cfTextFormat
-  = lens _cfTextFormat (\ s a -> s{_cfTextFormat = a})
-
--- | The horizontal alignment of the value in the cell.
-cfHorizontalAlignment :: Lens' CellFormat (Maybe CellFormatHorizontalAlignment)
-cfHorizontalAlignment
-  = lens _cfHorizontalAlignment
-      (\ s a -> s{_cfHorizontalAlignment = a})
-
--- | The padding of the cell.
-cfPadding :: Lens' CellFormat (Maybe Padding)
-cfPadding
-  = lens _cfPadding (\ s a -> s{_cfPadding = a})
-
-instance FromJSON CellFormat where
-        parseJSON
-          = withObject "CellFormat"
-              (\ o ->
-                 CellFormat' <$>
-                   (o .:? "borders") <*> (o .:? "verticalAlignment") <*>
-                     (o .:? "backgroundColor")
-                     <*> (o .:? "textRotation")
-                     <*> (o .:? "hyperlinkDisplayType")
-                     <*> (o .:? "wrapStrategy")
-                     <*> (o .:? "numberFormat")
-                     <*> (o .:? "textDirection")
-                     <*> (o .:? "textFormat")
-                     <*> (o .:? "horizontalAlignment")
-                     <*> (o .:? "padding"))
-
-instance ToJSON CellFormat where
-        toJSON CellFormat'{..}
-          = object
-              (catMaybes
-                 [("borders" .=) <$> _cfBOrders,
-                  ("verticalAlignment" .=) <$> _cfVerticalAlignment,
-                  ("backgroundColor" .=) <$> _cfBackgRoundColor,
-                  ("textRotation" .=) <$> _cfTextRotation,
-                  ("hyperlinkDisplayType" .=) <$>
-                    _cfHyperlinkDisplayType,
-                  ("wrapStrategy" .=) <$> _cfWrapStrategy,
-                  ("numberFormat" .=) <$> _cfNumberFormat,
-                  ("textDirection" .=) <$> _cfTextDirection,
-                  ("textFormat" .=) <$> _cfTextFormat,
-                  ("horizontalAlignment" .=) <$>
-                    _cfHorizontalAlignment,
-                  ("padding" .=) <$> _cfPadding])
-
--- | Deletes the protected range with the given ID.
---
--- /See:/ 'deleteProtectedRangeRequest' smart constructor.
-newtype DeleteProtectedRangeRequest =
-  DeleteProtectedRangeRequest'
-    { _dprrProtectedRangeId :: Maybe (Textual Int32)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteProtectedRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dprrProtectedRangeId'
-deleteProtectedRangeRequest
-    :: DeleteProtectedRangeRequest
-deleteProtectedRangeRequest =
-  DeleteProtectedRangeRequest' {_dprrProtectedRangeId = Nothing}
-
-
--- | The ID of the protected range to delete.
-dprrProtectedRangeId :: Lens' DeleteProtectedRangeRequest (Maybe Int32)
-dprrProtectedRangeId
-  = lens _dprrProtectedRangeId
-      (\ s a -> s{_dprrProtectedRangeId = a})
-      . mapping _Coerce
-
-instance FromJSON DeleteProtectedRangeRequest where
-        parseJSON
-          = withObject "DeleteProtectedRangeRequest"
-              (\ o ->
-                 DeleteProtectedRangeRequest' <$>
-                   (o .:? "protectedRangeId"))
-
-instance ToJSON DeleteProtectedRangeRequest where
-        toJSON DeleteProtectedRangeRequest'{..}
-          = object
-              (catMaybes
-                 [("protectedRangeId" .=) <$> _dprrProtectedRangeId])
-
--- | Updates an existing protected range with the specified protectedRangeId.
---
--- /See:/ 'updateProtectedRangeRequest' smart constructor.
-data UpdateProtectedRangeRequest =
-  UpdateProtectedRangeRequest'
-    { _uprrProtectedRange :: !(Maybe ProtectedRange)
-    , _uprrFields         :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateProtectedRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uprrProtectedRange'
---
--- * 'uprrFields'
-updateProtectedRangeRequest
-    :: UpdateProtectedRangeRequest
-updateProtectedRangeRequest =
-  UpdateProtectedRangeRequest'
-    {_uprrProtectedRange = Nothing, _uprrFields = Nothing}
-
-
--- | The protected range to update with the new properties.
-uprrProtectedRange :: Lens' UpdateProtectedRangeRequest (Maybe ProtectedRange)
-uprrProtectedRange
-  = lens _uprrProtectedRange
-      (\ s a -> s{_uprrProtectedRange = a})
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \`protectedRange\` is implied and should not be specified. A
--- single \`\"*\"\` can be used as short-hand for listing every field.
-uprrFields :: Lens' UpdateProtectedRangeRequest (Maybe GFieldMask)
-uprrFields
-  = lens _uprrFields (\ s a -> s{_uprrFields = a})
-
-instance FromJSON UpdateProtectedRangeRequest where
-        parseJSON
-          = withObject "UpdateProtectedRangeRequest"
-              (\ o ->
-                 UpdateProtectedRangeRequest' <$>
-                   (o .:? "protectedRange") <*> (o .:? "fields"))
-
-instance ToJSON UpdateProtectedRangeRequest where
-        toJSON UpdateProtectedRangeRequest'{..}
-          = object
-              (catMaybes
-                 [("protectedRange" .=) <$> _uprrProtectedRange,
-                  ("fields" .=) <$> _uprrFields])
-
--- | The result of adding a sheet.
---
--- /See:/ 'addSheetResponse' smart constructor.
-newtype AddSheetResponse =
-  AddSheetResponse'
-    { _aProperties :: Maybe SheetProperties
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddSheetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aProperties'
-addSheetResponse
-    :: AddSheetResponse
-addSheetResponse = AddSheetResponse' {_aProperties = Nothing}
-
-
--- | The properties of the newly added sheet.
-aProperties :: Lens' AddSheetResponse (Maybe SheetProperties)
-aProperties
-  = lens _aProperties (\ s a -> s{_aProperties = a})
-
-instance FromJSON AddSheetResponse where
-        parseJSON
-          = withObject "AddSheetResponse"
-              (\ o -> AddSheetResponse' <$> (o .:? "properties"))
-
-instance ToJSON AddSheetResponse where
-        toJSON AddSheetResponse'{..}
-          = object
-              (catMaybes [("properties" .=) <$> _aProperties])
-
--- | A protected range.
---
--- /See:/ 'protectedRange' smart constructor.
-data ProtectedRange =
-  ProtectedRange'
-    { _prProtectedRangeId      :: !(Maybe (Textual Int32))
-    , _prWarningOnly           :: !(Maybe Bool)
-    , _prNamedRangeId          :: !(Maybe Text)
-    , _prRange                 :: !(Maybe GridRange)
-    , _prEditors               :: !(Maybe Editors)
-    , _prUnprotectedRanges     :: !(Maybe [GridRange])
-    , _prRequestingUserCanEdit :: !(Maybe Bool)
-    , _prDescription           :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProtectedRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prProtectedRangeId'
---
--- * 'prWarningOnly'
---
--- * 'prNamedRangeId'
---
--- * 'prRange'
---
--- * 'prEditors'
---
--- * 'prUnprotectedRanges'
---
--- * 'prRequestingUserCanEdit'
---
--- * 'prDescription'
-protectedRange
-    :: ProtectedRange
-protectedRange =
-  ProtectedRange'
-    { _prProtectedRangeId = Nothing
-    , _prWarningOnly = Nothing
-    , _prNamedRangeId = Nothing
-    , _prRange = Nothing
-    , _prEditors = Nothing
-    , _prUnprotectedRanges = Nothing
-    , _prRequestingUserCanEdit = Nothing
-    , _prDescription = Nothing
-    }
-
-
--- | The ID of the protected range. This field is read-only.
-prProtectedRangeId :: Lens' ProtectedRange (Maybe Int32)
-prProtectedRangeId
-  = lens _prProtectedRangeId
-      (\ s a -> s{_prProtectedRangeId = a})
-      . mapping _Coerce
-
--- | True if this protected range will show a warning when editing.
--- Warning-based protection means that every user can edit data in the
--- protected range, except editing will prompt a warning asking the user to
--- confirm the edit. When writing: if this field is true, then editors is
--- ignored. Additionally, if this field is changed from true to false and
--- the \`editors\` field is not set (nor included in the field mask), then
--- the editors will be set to all the editors in the document.
-prWarningOnly :: Lens' ProtectedRange (Maybe Bool)
-prWarningOnly
-  = lens _prWarningOnly
-      (\ s a -> s{_prWarningOnly = a})
-
--- | The named range this protected range is backed by, if any. When writing,
--- only one of range or named_range_id may be set.
-prNamedRangeId :: Lens' ProtectedRange (Maybe Text)
-prNamedRangeId
-  = lens _prNamedRangeId
-      (\ s a -> s{_prNamedRangeId = a})
-
--- | The range that is being protected. The range may be fully unbounded, in
--- which case this is considered a protected sheet. When writing, only one
--- of range or named_range_id may be set.
-prRange :: Lens' ProtectedRange (Maybe GridRange)
-prRange = lens _prRange (\ s a -> s{_prRange = a})
-
--- | The users and groups with edit access to the protected range. This field
--- is only visible to users with edit access to the protected range and the
--- document. Editors are not supported with warning_only protection.
-prEditors :: Lens' ProtectedRange (Maybe Editors)
-prEditors
-  = lens _prEditors (\ s a -> s{_prEditors = a})
-
--- | The list of unprotected ranges within a protected sheet. Unprotected
--- ranges are only supported on protected sheets.
-prUnprotectedRanges :: Lens' ProtectedRange [GridRange]
-prUnprotectedRanges
-  = lens _prUnprotectedRanges
-      (\ s a -> s{_prUnprotectedRanges = a})
-      . _Default
-      . _Coerce
-
--- | True if the user who requested this protected range can edit the
--- protected area. This field is read-only.
-prRequestingUserCanEdit :: Lens' ProtectedRange (Maybe Bool)
-prRequestingUserCanEdit
-  = lens _prRequestingUserCanEdit
-      (\ s a -> s{_prRequestingUserCanEdit = a})
-
--- | The description of this protected range.
-prDescription :: Lens' ProtectedRange (Maybe Text)
-prDescription
-  = lens _prDescription
-      (\ s a -> s{_prDescription = a})
-
-instance FromJSON ProtectedRange where
-        parseJSON
-          = withObject "ProtectedRange"
-              (\ o ->
-                 ProtectedRange' <$>
-                   (o .:? "protectedRangeId") <*> (o .:? "warningOnly")
-                     <*> (o .:? "namedRangeId")
-                     <*> (o .:? "range")
-                     <*> (o .:? "editors")
-                     <*> (o .:? "unprotectedRanges" .!= mempty)
-                     <*> (o .:? "requestingUserCanEdit")
-                     <*> (o .:? "description"))
-
-instance ToJSON ProtectedRange where
-        toJSON ProtectedRange'{..}
-          = object
-              (catMaybes
-                 [("protectedRangeId" .=) <$> _prProtectedRangeId,
-                  ("warningOnly" .=) <$> _prWarningOnly,
-                  ("namedRangeId" .=) <$> _prNamedRangeId,
-                  ("range" .=) <$> _prRange,
-                  ("editors" .=) <$> _prEditors,
-                  ("unprotectedRanges" .=) <$> _prUnprotectedRanges,
-                  ("requestingUserCanEdit" .=) <$>
-                    _prRequestingUserCanEdit,
-                  ("description" .=) <$> _prDescription])
-
--- | An axis of the chart. A chart may not have more than one axis per axis
--- position.
---
--- /See:/ 'basicChartAxis' smart constructor.
-data BasicChartAxis =
-  BasicChartAxis'
-    { _bcaTitleTextPosition :: !(Maybe TextPosition)
-    , _bcaFormat            :: !(Maybe TextFormat)
-    , _bcaTitle             :: !(Maybe Text)
-    , _bcaPosition          :: !(Maybe BasicChartAxisPosition)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BasicChartAxis' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bcaTitleTextPosition'
---
--- * 'bcaFormat'
---
--- * 'bcaTitle'
---
--- * 'bcaPosition'
-basicChartAxis
-    :: BasicChartAxis
-basicChartAxis =
-  BasicChartAxis'
-    { _bcaTitleTextPosition = Nothing
-    , _bcaFormat = Nothing
-    , _bcaTitle = Nothing
-    , _bcaPosition = Nothing
-    }
-
-
--- | The axis title text position.
-bcaTitleTextPosition :: Lens' BasicChartAxis (Maybe TextPosition)
-bcaTitleTextPosition
-  = lens _bcaTitleTextPosition
-      (\ s a -> s{_bcaTitleTextPosition = a})
-
--- | The format of the title. Only valid if the axis is not associated with
--- the domain.
-bcaFormat :: Lens' BasicChartAxis (Maybe TextFormat)
-bcaFormat
-  = lens _bcaFormat (\ s a -> s{_bcaFormat = a})
-
--- | The title of this axis. If set, this overrides any title inferred from
--- headers of the data.
-bcaTitle :: Lens' BasicChartAxis (Maybe Text)
-bcaTitle = lens _bcaTitle (\ s a -> s{_bcaTitle = a})
-
--- | The position of this axis.
-bcaPosition :: Lens' BasicChartAxis (Maybe BasicChartAxisPosition)
-bcaPosition
-  = lens _bcaPosition (\ s a -> s{_bcaPosition = a})
-
-instance FromJSON BasicChartAxis where
-        parseJSON
-          = withObject "BasicChartAxis"
-              (\ o ->
-                 BasicChartAxis' <$>
-                   (o .:? "titleTextPosition") <*> (o .:? "format") <*>
-                     (o .:? "title")
-                     <*> (o .:? "position"))
-
-instance ToJSON BasicChartAxis where
-        toJSON BasicChartAxis'{..}
-          = object
-              (catMaybes
-                 [("titleTextPosition" .=) <$> _bcaTitleTextPosition,
-                  ("format" .=) <$> _bcaFormat,
-                  ("title" .=) <$> _bcaTitle,
-                  ("position" .=) <$> _bcaPosition])
-
--- | Data in the grid, as well as metadata about the dimensions.
---
--- /See:/ 'gridData' smart constructor.
-data GridData =
-  GridData'
-    { _gdRowMetadata    :: !(Maybe [DimensionProperties])
-    , _gdStartRow       :: !(Maybe (Textual Int32))
-    , _gdRowData        :: !(Maybe [RowData])
-    , _gdColumnMetadata :: !(Maybe [DimensionProperties])
-    , _gdStartColumn    :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GridData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gdRowMetadata'
---
--- * 'gdStartRow'
---
--- * 'gdRowData'
---
--- * 'gdColumnMetadata'
---
--- * 'gdStartColumn'
-gridData
-    :: GridData
-gridData =
-  GridData'
-    { _gdRowMetadata = Nothing
-    , _gdStartRow = Nothing
-    , _gdRowData = Nothing
-    , _gdColumnMetadata = Nothing
-    , _gdStartColumn = Nothing
-    }
-
-
--- | Metadata about the requested rows in the grid, starting with the row in
--- start_row.
-gdRowMetadata :: Lens' GridData [DimensionProperties]
-gdRowMetadata
-  = lens _gdRowMetadata
-      (\ s a -> s{_gdRowMetadata = a})
-      . _Default
-      . _Coerce
-
--- | The first row this GridData refers to, zero-based.
-gdStartRow :: Lens' GridData (Maybe Int32)
-gdStartRow
-  = lens _gdStartRow (\ s a -> s{_gdStartRow = a}) .
-      mapping _Coerce
-
--- | The data in the grid, one entry per row, starting with the row in
--- startRow. The values in RowData will correspond to columns starting at
--- start_column.
-gdRowData :: Lens' GridData [RowData]
-gdRowData
-  = lens _gdRowData (\ s a -> s{_gdRowData = a}) .
-      _Default
-      . _Coerce
-
--- | Metadata about the requested columns in the grid, starting with the
--- column in start_column.
-gdColumnMetadata :: Lens' GridData [DimensionProperties]
-gdColumnMetadata
-  = lens _gdColumnMetadata
-      (\ s a -> s{_gdColumnMetadata = a})
-      . _Default
-      . _Coerce
-
--- | The first column this GridData refers to, zero-based.
-gdStartColumn :: Lens' GridData (Maybe Int32)
-gdStartColumn
-  = lens _gdStartColumn
-      (\ s a -> s{_gdStartColumn = a})
-      . mapping _Coerce
-
-instance FromJSON GridData where
-        parseJSON
-          = withObject "GridData"
-              (\ o ->
-                 GridData' <$>
-                   (o .:? "rowMetadata" .!= mempty) <*>
-                     (o .:? "startRow")
-                     <*> (o .:? "rowData" .!= mempty)
-                     <*> (o .:? "columnMetadata" .!= mempty)
-                     <*> (o .:? "startColumn"))
-
-instance ToJSON GridData where
-        toJSON GridData'{..}
-          = object
-              (catMaybes
-                 [("rowMetadata" .=) <$> _gdRowMetadata,
-                  ("startRow" .=) <$> _gdStartRow,
-                  ("rowData" .=) <$> _gdRowData,
-                  ("columnMetadata" .=) <$> _gdColumnMetadata,
-                  ("startColumn" .=) <$> _gdStartColumn])
-
--- | The number format of a cell.
---
--- /See:/ 'numberFormat' smart constructor.
-data NumberFormat =
-  NumberFormat'
-    { _nfPattern :: !(Maybe Text)
-    , _nfType    :: !(Maybe NumberFormatType)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NumberFormat' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nfPattern'
---
--- * 'nfType'
-numberFormat
-    :: NumberFormat
-numberFormat = NumberFormat' {_nfPattern = Nothing, _nfType = Nothing}
-
-
--- | Pattern string used for formatting. If not set, a default pattern based
--- on the user\'s locale will be used if necessary for the given type. See
--- the [Date and Number Formats guide](\/sheets\/api\/guides\/formats) for
--- more information about the supported patterns.
-nfPattern :: Lens' NumberFormat (Maybe Text)
-nfPattern
-  = lens _nfPattern (\ s a -> s{_nfPattern = a})
-
--- | The type of the number format. When writing, this field must be set.
-nfType :: Lens' NumberFormat (Maybe NumberFormatType)
-nfType = lens _nfType (\ s a -> s{_nfType = a})
-
-instance FromJSON NumberFormat where
-        parseJSON
-          = withObject "NumberFormat"
-              (\ o ->
-                 NumberFormat' <$>
-                   (o .:? "pattern") <*> (o .:? "type"))
-
-instance ToJSON NumberFormat where
-        toJSON NumberFormat'{..}
-          = object
-              (catMaybes
-                 [("pattern" .=) <$> _nfPattern,
-                  ("type" .=) <$> _nfType])
-
--- | The reply for batch updating a spreadsheet.
---
--- /See:/ 'batchUpdateSpreadsheetResponse' smart constructor.
-data BatchUpdateSpreadsheetResponse =
-  BatchUpdateSpreadsheetResponse'
-    { _busrSpreadsheetId      :: !(Maybe Text)
-    , _busrReplies            :: !(Maybe [Response])
-    , _busrUpdatedSpreadsheet :: !(Maybe Spreadsheet)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchUpdateSpreadsheetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'busrSpreadsheetId'
---
--- * 'busrReplies'
---
--- * 'busrUpdatedSpreadsheet'
-batchUpdateSpreadsheetResponse
-    :: BatchUpdateSpreadsheetResponse
-batchUpdateSpreadsheetResponse =
-  BatchUpdateSpreadsheetResponse'
-    { _busrSpreadsheetId = Nothing
-    , _busrReplies = Nothing
-    , _busrUpdatedSpreadsheet = Nothing
-    }
-
-
--- | The spreadsheet the updates were applied to.
-busrSpreadsheetId :: Lens' BatchUpdateSpreadsheetResponse (Maybe Text)
-busrSpreadsheetId
-  = lens _busrSpreadsheetId
-      (\ s a -> s{_busrSpreadsheetId = a})
-
--- | The reply of the updates. This maps 1:1 with the updates, although
--- replies to some requests may be empty.
-busrReplies :: Lens' BatchUpdateSpreadsheetResponse [Response]
-busrReplies
-  = lens _busrReplies (\ s a -> s{_busrReplies = a}) .
-      _Default
-      . _Coerce
-
--- | The spreadsheet after updates were applied. This is only set if
--- [BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is
--- \`true\`.
-busrUpdatedSpreadsheet :: Lens' BatchUpdateSpreadsheetResponse (Maybe Spreadsheet)
-busrUpdatedSpreadsheet
-  = lens _busrUpdatedSpreadsheet
-      (\ s a -> s{_busrUpdatedSpreadsheet = a})
-
-instance FromJSON BatchUpdateSpreadsheetResponse
-         where
-        parseJSON
-          = withObject "BatchUpdateSpreadsheetResponse"
-              (\ o ->
-                 BatchUpdateSpreadsheetResponse' <$>
-                   (o .:? "spreadsheetId") <*>
-                     (o .:? "replies" .!= mempty)
-                     <*> (o .:? "updatedSpreadsheet"))
-
-instance ToJSON BatchUpdateSpreadsheetResponse where
-        toJSON BatchUpdateSpreadsheetResponse'{..}
-          = object
-              (catMaybes
-                 [("spreadsheetId" .=) <$> _busrSpreadsheetId,
-                  ("replies" .=) <$> _busrReplies,
-                  ("updatedSpreadsheet" .=) <$>
-                    _busrUpdatedSpreadsheet])
-
--- | Filter that describes what data should be selected or returned from a
--- request.
---
--- /See:/ 'dataFilter' smart constructor.
-data DataFilter =
-  DataFilter'
-    { _dfGridRange               :: !(Maybe GridRange)
-    , _dfA1Range                 :: !(Maybe Text)
-    , _dfDeveloperMetadataLookup :: !(Maybe DeveloperMetadataLookup)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DataFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfGridRange'
---
--- * 'dfA1Range'
---
--- * 'dfDeveloperMetadataLookup'
-dataFilter
-    :: DataFilter
-dataFilter =
-  DataFilter'
-    { _dfGridRange = Nothing
-    , _dfA1Range = Nothing
-    , _dfDeveloperMetadataLookup = Nothing
-    }
-
-
--- | Selects data that matches the range described by the GridRange.
-dfGridRange :: Lens' DataFilter (Maybe GridRange)
-dfGridRange
-  = lens _dfGridRange (\ s a -> s{_dfGridRange = a})
-
--- | Selects data that matches the specified A1 range.
-dfA1Range :: Lens' DataFilter (Maybe Text)
-dfA1Range
-  = lens _dfA1Range (\ s a -> s{_dfA1Range = a})
-
--- | Selects data associated with the developer metadata matching the
--- criteria described by this DeveloperMetadataLookup.
-dfDeveloperMetadataLookup :: Lens' DataFilter (Maybe DeveloperMetadataLookup)
-dfDeveloperMetadataLookup
-  = lens _dfDeveloperMetadataLookup
-      (\ s a -> s{_dfDeveloperMetadataLookup = a})
-
-instance FromJSON DataFilter where
-        parseJSON
-          = withObject "DataFilter"
-              (\ o ->
-                 DataFilter' <$>
-                   (o .:? "gridRange") <*> (o .:? "a1Range") <*>
-                     (o .:? "developerMetadataLookup"))
-
-instance ToJSON DataFilter where
-        toJSON DataFilter'{..}
-          = object
-              (catMaybes
-                 [("gridRange" .=) <$> _dfGridRange,
-                  ("a1Range" .=) <$> _dfA1Range,
-                  ("developerMetadataLookup" .=) <$>
-                    _dfDeveloperMetadataLookup])
-
--- | Sets a data validation rule to every cell in the range. To clear
--- validation in a range, call this with no rule specified.
---
--- /See:/ 'setDataValidationRequest' smart constructor.
-data SetDataValidationRequest =
-  SetDataValidationRequest'
-    { _sdvrRule  :: !(Maybe DataValidationRule)
-    , _sdvrRange :: !(Maybe GridRange)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetDataValidationRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdvrRule'
---
--- * 'sdvrRange'
-setDataValidationRequest
-    :: SetDataValidationRequest
-setDataValidationRequest =
-  SetDataValidationRequest' {_sdvrRule = Nothing, _sdvrRange = Nothing}
-
-
--- | The data validation rule to set on each cell in the range, or empty to
--- clear the data validation in the range.
-sdvrRule :: Lens' SetDataValidationRequest (Maybe DataValidationRule)
-sdvrRule = lens _sdvrRule (\ s a -> s{_sdvrRule = a})
-
--- | The range the data validation rule should apply to.
-sdvrRange :: Lens' SetDataValidationRequest (Maybe GridRange)
-sdvrRange
-  = lens _sdvrRange (\ s a -> s{_sdvrRange = a})
-
-instance FromJSON SetDataValidationRequest where
-        parseJSON
-          = withObject "SetDataValidationRequest"
-              (\ o ->
-                 SetDataValidationRequest' <$>
-                   (o .:? "rule") <*> (o .:? "range"))
-
-instance ToJSON SetDataValidationRequest where
-        toJSON SetDataValidationRequest'{..}
-          = object
-              (catMaybes
-                 [("rule" .=) <$> _sdvrRule,
-                  ("range" .=) <$> _sdvrRange])
-
--- | Properties referring a single dimension (either row or column). If both
--- BandedRange.row_properties and BandedRange.column_properties are set,
--- the fill colors are applied to cells according to the following rules: *
--- header_color and footer_color take priority over band colors. *
--- first_band_color takes priority over second_band_color. * row_properties
--- takes priority over column_properties. For example, the first row color
--- takes priority over the first column color, but the first column color
--- takes priority over the second row color. Similarly, the row header
--- takes priority over the column header in the top left cell, but the
--- column header takes priority over the first row color if the row header
--- is not set.
---
--- /See:/ 'bandingProperties' smart constructor.
-data BandingProperties =
-  BandingProperties'
-    { _bpSecondBandColor :: !(Maybe Color)
-    , _bpHeaderColor     :: !(Maybe Color)
-    , _bpFooterColor     :: !(Maybe Color)
-    , _bpFirstBandColor  :: !(Maybe Color)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BandingProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bpSecondBandColor'
---
--- * 'bpHeaderColor'
---
--- * 'bpFooterColor'
---
--- * 'bpFirstBandColor'
-bandingProperties
-    :: BandingProperties
-bandingProperties =
-  BandingProperties'
-    { _bpSecondBandColor = Nothing
-    , _bpHeaderColor = Nothing
-    , _bpFooterColor = Nothing
-    , _bpFirstBandColor = Nothing
-    }
-
-
--- | The second color that is alternating. (Required)
-bpSecondBandColor :: Lens' BandingProperties (Maybe Color)
-bpSecondBandColor
-  = lens _bpSecondBandColor
-      (\ s a -> s{_bpSecondBandColor = a})
-
--- | The color of the first row or column. If this field is set, the first
--- row or column will be filled with this color and the colors will
--- alternate between first_band_color and second_band_color starting from
--- the second row or column. Otherwise, the first row or column will be
--- filled with first_band_color and the colors will proceed to alternate as
--- they normally would.
-bpHeaderColor :: Lens' BandingProperties (Maybe Color)
-bpHeaderColor
-  = lens _bpHeaderColor
-      (\ s a -> s{_bpHeaderColor = a})
-
--- | The color of the last row or column. If this field is not set, the last
--- row or column will be filled with either first_band_color or
--- second_band_color, depending on the color of the previous row or column.
-bpFooterColor :: Lens' BandingProperties (Maybe Color)
-bpFooterColor
-  = lens _bpFooterColor
-      (\ s a -> s{_bpFooterColor = a})
-
--- | The first color that is alternating. (Required)
-bpFirstBandColor :: Lens' BandingProperties (Maybe Color)
-bpFirstBandColor
-  = lens _bpFirstBandColor
-      (\ s a -> s{_bpFirstBandColor = a})
-
-instance FromJSON BandingProperties where
-        parseJSON
-          = withObject "BandingProperties"
-              (\ o ->
-                 BandingProperties' <$>
-                   (o .:? "secondBandColor") <*> (o .:? "headerColor")
-                     <*> (o .:? "footerColor")
-                     <*> (o .:? "firstBandColor"))
-
-instance ToJSON BandingProperties where
-        toJSON BandingProperties'{..}
-          = object
-              (catMaybes
-                 [("secondBandColor" .=) <$> _bpSecondBandColor,
-                  ("headerColor" .=) <$> _bpHeaderColor,
-                  ("footerColor" .=) <$> _bpFooterColor,
-                  ("firstBandColor" .=) <$> _bpFirstBandColor])
-
--- | Duplicates a particular filter view.
---
--- /See:/ 'duplicateFilterViewRequest' smart constructor.
-newtype DuplicateFilterViewRequest =
-  DuplicateFilterViewRequest'
-    { _dFilterId :: Maybe (Textual Int32)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DuplicateFilterViewRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dFilterId'
-duplicateFilterViewRequest
-    :: DuplicateFilterViewRequest
-duplicateFilterViewRequest = DuplicateFilterViewRequest' {_dFilterId = Nothing}
-
-
--- | The ID of the filter being duplicated.
-dFilterId :: Lens' DuplicateFilterViewRequest (Maybe Int32)
-dFilterId
-  = lens _dFilterId (\ s a -> s{_dFilterId = a}) .
-      mapping _Coerce
-
-instance FromJSON DuplicateFilterViewRequest where
-        parseJSON
-          = withObject "DuplicateFilterViewRequest"
-              (\ o ->
-                 DuplicateFilterViewRequest' <$> (o .:? "filterId"))
-
-instance ToJSON DuplicateFilterViewRequest where
-        toJSON DuplicateFilterViewRequest'{..}
-          = object (catMaybes [("filterId" .=) <$> _dFilterId])
-
--- | A single grouping (either row or column) in a pivot table.
---
--- /See:/ 'pivotGroup' smart constructor.
-data PivotGroup =
-  PivotGroup'
-    { _pgRepeatHeadings     :: !(Maybe Bool)
-    , _pgValueMetadata      :: !(Maybe [PivotGroupValueMetadata])
-    , _pgSourceColumnOffSet :: !(Maybe (Textual Int32))
-    , _pgSortOrder          :: !(Maybe PivotGroupSortOrder)
-    , _pgShowTotals         :: !(Maybe Bool)
-    , _pgValueBucket        :: !(Maybe PivotGroupSortValueBucket)
-    , _pgLabel              :: !(Maybe Text)
-    , _pgGroupRule          :: !(Maybe PivotGroupRule)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PivotGroup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pgRepeatHeadings'
---
--- * 'pgValueMetadata'
---
--- * 'pgSourceColumnOffSet'
---
--- * 'pgSortOrder'
---
--- * 'pgShowTotals'
---
--- * 'pgValueBucket'
---
--- * 'pgLabel'
---
--- * 'pgGroupRule'
-pivotGroup
-    :: PivotGroup
-pivotGroup =
-  PivotGroup'
-    { _pgRepeatHeadings = Nothing
-    , _pgValueMetadata = Nothing
-    , _pgSourceColumnOffSet = Nothing
-    , _pgSortOrder = Nothing
-    , _pgShowTotals = Nothing
-    , _pgValueBucket = Nothing
-    , _pgLabel = Nothing
-    , _pgGroupRule = Nothing
-    }
-
-
--- | True if the headings in this pivot group should be repeated. This is
--- only valid for row groupings and is ignored by columns. By default, we
--- minimize repitition of headings by not showing higher level headings
--- where they are the same. For example, even though the third row below
--- corresponds to \"Q1 Mar\", \"Q1\" is not shown because it is redundant
--- with previous rows. Setting repeat_headings to true would cause \"Q1\"
--- to be repeated for \"Feb\" and \"Mar\". +--------------+ | Q1 | Jan | |
--- | Feb | | | Mar | +--------+-----+ | Q1 Total | +--------------+
-pgRepeatHeadings :: Lens' PivotGroup (Maybe Bool)
-pgRepeatHeadings
-  = lens _pgRepeatHeadings
-      (\ s a -> s{_pgRepeatHeadings = a})
-
--- | Metadata about values in the grouping.
-pgValueMetadata :: Lens' PivotGroup [PivotGroupValueMetadata]
-pgValueMetadata
-  = lens _pgValueMetadata
-      (\ s a -> s{_pgValueMetadata = a})
-      . _Default
-      . _Coerce
-
--- | The column offset of the source range that this grouping is based on.
--- For example, if the source was \`C10:E15\`, a \`sourceColumnOffset\` of
--- \`0\` means this group refers to column \`C\`, whereas the offset \`1\`
--- would refer to column \`D\`.
-pgSourceColumnOffSet :: Lens' PivotGroup (Maybe Int32)
-pgSourceColumnOffSet
-  = lens _pgSourceColumnOffSet
-      (\ s a -> s{_pgSourceColumnOffSet = a})
-      . mapping _Coerce
-
--- | The order the values in this group should be sorted.
-pgSortOrder :: Lens' PivotGroup (Maybe PivotGroupSortOrder)
-pgSortOrder
-  = lens _pgSortOrder (\ s a -> s{_pgSortOrder = a})
-
--- | True if the pivot table should include the totals for this grouping.
-pgShowTotals :: Lens' PivotGroup (Maybe Bool)
-pgShowTotals
-  = lens _pgShowTotals (\ s a -> s{_pgShowTotals = a})
-
--- | The bucket of the opposite pivot group to sort by. If not specified,
--- sorting is alphabetical by this group\'s values.
-pgValueBucket :: Lens' PivotGroup (Maybe PivotGroupSortValueBucket)
-pgValueBucket
-  = lens _pgValueBucket
-      (\ s a -> s{_pgValueBucket = a})
-
--- | The labels to use for the row\/column groups which can be customized.
--- For example, in the following pivot table, the row label is \`Region\`
--- (which could be renamed to \`State\`) and the column label is
--- \`Product\` (which could be renamed \`Item\`). Pivot tables created
--- before December 2017 do not have header labels. If you\'d like to add
--- header labels to an existing pivot table, please delete the existing
--- pivot table and then create a new pivot table with same parameters.
--- +--------------+---------+-------+ | SUM of Units | Product | | | Region
--- | Pen | Paper | +--------------+---------+-------+ | New York | 345 | 98
--- | | Oregon | 234 | 123 | | Tennessee | 531 | 415 |
--- +--------------+---------+-------+ | Grand Total | 1110 | 636 |
--- +--------------+---------+-------+
-pgLabel :: Lens' PivotGroup (Maybe Text)
-pgLabel = lens _pgLabel (\ s a -> s{_pgLabel = a})
-
--- | The group rule to apply to this row\/column group.
-pgGroupRule :: Lens' PivotGroup (Maybe PivotGroupRule)
-pgGroupRule
-  = lens _pgGroupRule (\ s a -> s{_pgGroupRule = a})
-
-instance FromJSON PivotGroup where
-        parseJSON
-          = withObject "PivotGroup"
-              (\ o ->
-                 PivotGroup' <$>
-                   (o .:? "repeatHeadings") <*>
-                     (o .:? "valueMetadata" .!= mempty)
-                     <*> (o .:? "sourceColumnOffset")
-                     <*> (o .:? "sortOrder")
-                     <*> (o .:? "showTotals")
-                     <*> (o .:? "valueBucket")
-                     <*> (o .:? "label")
-                     <*> (o .:? "groupRule"))
-
-instance ToJSON PivotGroup where
-        toJSON PivotGroup'{..}
-          = object
-              (catMaybes
-                 [("repeatHeadings" .=) <$> _pgRepeatHeadings,
-                  ("valueMetadata" .=) <$> _pgValueMetadata,
-                  ("sourceColumnOffset" .=) <$> _pgSourceColumnOffSet,
-                  ("sortOrder" .=) <$> _pgSortOrder,
-                  ("showTotals" .=) <$> _pgShowTotals,
-                  ("valueBucket" .=) <$> _pgValueBucket,
-                  ("label" .=) <$> _pgLabel,
-                  ("groupRule" .=) <$> _pgGroupRule])
-
--- | The result of adding a banded range.
---
--- /See:/ 'addBandingResponse' smart constructor.
-newtype AddBandingResponse =
-  AddBandingResponse'
-    { _aBandedRange :: Maybe BandedRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddBandingResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aBandedRange'
-addBandingResponse
-    :: AddBandingResponse
-addBandingResponse = AddBandingResponse' {_aBandedRange = Nothing}
-
-
--- | The banded range that was added.
-aBandedRange :: Lens' AddBandingResponse (Maybe BandedRange)
-aBandedRange
-  = lens _aBandedRange (\ s a -> s{_aBandedRange = a})
-
-instance FromJSON AddBandingResponse where
-        parseJSON
-          = withObject "AddBandingResponse"
-              (\ o ->
-                 AddBandingResponse' <$> (o .:? "bandedRange"))
-
-instance ToJSON AddBandingResponse where
-        toJSON AddBandingResponse'{..}
-          = object
-              (catMaybes [("bandedRange" .=) <$> _aBandedRange])
-
--- | An </chart/interactive/docs/gallery/orgchart org chart>. Org charts
--- require a unique set of labels in labels and may optionally include
--- parent_labels and tooltips. parent_labels contain, for each node, the
--- label identifying the parent node. tooltips contain, for each node, an
--- optional tooltip. For example, to describe an OrgChart with Alice as the
--- CEO, Bob as the President (reporting to Alice) and Cathy as VP of Sales
--- (also reporting to Alice), have labels contain \"Alice\", \"Bob\",
--- \"Cathy\", parent_labels contain \"\", \"Alice\", \"Alice\" and tooltips
--- contain \"CEO\", \"President\", \"VP Sales\".
---
--- /See:/ 'orgChartSpec' smart constructor.
-data OrgChartSpec =
-  OrgChartSpec'
-    { _ocsNodeColor         :: !(Maybe Color)
-    , _ocsNodeSize          :: !(Maybe OrgChartSpecNodeSize)
-    , _ocsTooltips          :: !(Maybe ChartData)
-    , _ocsSelectedNodeColor :: !(Maybe Color)
-    , _ocsLabels            :: !(Maybe ChartData)
-    , _ocsParentLabels      :: !(Maybe ChartData)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OrgChartSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ocsNodeColor'
---
--- * 'ocsNodeSize'
---
--- * 'ocsTooltips'
---
--- * 'ocsSelectedNodeColor'
---
--- * 'ocsLabels'
---
--- * 'ocsParentLabels'
-orgChartSpec
-    :: OrgChartSpec
-orgChartSpec =
-  OrgChartSpec'
-    { _ocsNodeColor = Nothing
-    , _ocsNodeSize = Nothing
-    , _ocsTooltips = Nothing
-    , _ocsSelectedNodeColor = Nothing
-    , _ocsLabels = Nothing
-    , _ocsParentLabels = Nothing
-    }
-
-
--- | The color of the org chart nodes.
-ocsNodeColor :: Lens' OrgChartSpec (Maybe Color)
-ocsNodeColor
-  = lens _ocsNodeColor (\ s a -> s{_ocsNodeColor = a})
-
--- | The size of the org chart nodes.
-ocsNodeSize :: Lens' OrgChartSpec (Maybe OrgChartSpecNodeSize)
-ocsNodeSize
-  = lens _ocsNodeSize (\ s a -> s{_ocsNodeSize = a})
-
--- | The data containing the tooltip for the corresponding node. A blank
--- value results in no tooltip being displayed for the node. This field is
--- optional.
-ocsTooltips :: Lens' OrgChartSpec (Maybe ChartData)
-ocsTooltips
-  = lens _ocsTooltips (\ s a -> s{_ocsTooltips = a})
-
--- | The color of the selected org chart nodes.
-ocsSelectedNodeColor :: Lens' OrgChartSpec (Maybe Color)
-ocsSelectedNodeColor
-  = lens _ocsSelectedNodeColor
-      (\ s a -> s{_ocsSelectedNodeColor = a})
-
--- | The data containing the labels for all the nodes in the chart. Labels
--- must be unique.
-ocsLabels :: Lens' OrgChartSpec (Maybe ChartData)
-ocsLabels
-  = lens _ocsLabels (\ s a -> s{_ocsLabels = a})
-
--- | The data containing the label of the parent for the corresponding node.
--- A blank value indicates that the node has no parent and is a top-level
--- node. This field is optional.
-ocsParentLabels :: Lens' OrgChartSpec (Maybe ChartData)
-ocsParentLabels
-  = lens _ocsParentLabels
-      (\ s a -> s{_ocsParentLabels = a})
-
-instance FromJSON OrgChartSpec where
-        parseJSON
-          = withObject "OrgChartSpec"
-              (\ o ->
-                 OrgChartSpec' <$>
-                   (o .:? "nodeColor") <*> (o .:? "nodeSize") <*>
-                     (o .:? "tooltips")
-                     <*> (o .:? "selectedNodeColor")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "parentLabels"))
-
-instance ToJSON OrgChartSpec where
-        toJSON OrgChartSpec'{..}
-          = object
-              (catMaybes
-                 [("nodeColor" .=) <$> _ocsNodeColor,
-                  ("nodeSize" .=) <$> _ocsNodeSize,
-                  ("tooltips" .=) <$> _ocsTooltips,
-                  ("selectedNodeColor" .=) <$> _ocsSelectedNodeColor,
-                  ("labels" .=) <$> _ocsLabels,
-                  ("parentLabels" .=) <$> _ocsParentLabels])
-
--- | Randomizes the order of the rows in a range.
---
--- /See:/ 'randomizeRangeRequest' smart constructor.
-newtype RandomizeRangeRequest =
-  RandomizeRangeRequest'
-    { _rrrRange :: Maybe GridRange
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RandomizeRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rrrRange'
-randomizeRangeRequest
-    :: RandomizeRangeRequest
-randomizeRangeRequest = RandomizeRangeRequest' {_rrrRange = Nothing}
-
-
--- | The range to randomize.
-rrrRange :: Lens' RandomizeRangeRequest (Maybe GridRange)
-rrrRange = lens _rrrRange (\ s a -> s{_rrrRange = a})
-
-instance FromJSON RandomizeRangeRequest where
-        parseJSON
-          = withObject "RandomizeRangeRequest"
-              (\ o -> RandomizeRangeRequest' <$> (o .:? "range"))
-
-instance ToJSON RandomizeRangeRequest where
-        toJSON RandomizeRangeRequest'{..}
-          = object (catMaybes [("range" .=) <$> _rrrRange])
-
--- | A histogram series containing the series color and data.
---
--- /See:/ 'histogramSeries' smart constructor.
-data HistogramSeries =
-  HistogramSeries'
-    { _hsBarColor :: !(Maybe Color)
-    , _hsData     :: !(Maybe ChartData)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HistogramSeries' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hsBarColor'
---
--- * 'hsData'
-histogramSeries
-    :: HistogramSeries
-histogramSeries = HistogramSeries' {_hsBarColor = Nothing, _hsData = Nothing}
-
-
--- | The color of the column representing this series in each bucket. This
--- field is optional.
-hsBarColor :: Lens' HistogramSeries (Maybe Color)
-hsBarColor
-  = lens _hsBarColor (\ s a -> s{_hsBarColor = a})
-
--- | The data for this histogram series.
-hsData :: Lens' HistogramSeries (Maybe ChartData)
-hsData = lens _hsData (\ s a -> s{_hsData = a})
-
-instance FromJSON HistogramSeries where
-        parseJSON
-          = withObject "HistogramSeries"
-              (\ o ->
-                 HistogramSeries' <$>
-                   (o .:? "barColor") <*> (o .:? "data"))
-
-instance ToJSON HistogramSeries where
-        toJSON HistogramSeries'{..}
-          = object
-              (catMaybes
-                 [("barColor" .=) <$> _hsBarColor,
-                  ("data" .=) <$> _hsData])
-
--- | A </chart/interactive/docs/gallery/treemap Treemap chart>.
---
--- /See:/ 'treemapChartSpec' smart constructor.
-data TreemapChartSpec =
-  TreemapChartSpec'
-    { _tcsHintedLevels :: !(Maybe (Textual Int32))
-    , _tcsMaxValue     :: !(Maybe (Textual Double))
-    , _tcsHeaderColor  :: !(Maybe Color)
-    , _tcsSizeData     :: !(Maybe ChartData)
-    , _tcsColorData    :: !(Maybe ChartData)
-    , _tcsHideTooltips :: !(Maybe Bool)
-    , _tcsLevels       :: !(Maybe (Textual Int32))
-    , _tcsLabels       :: !(Maybe ChartData)
-    , _tcsColorScale   :: !(Maybe TreemapChartColorScale)
-    , _tcsTextFormat   :: !(Maybe TextFormat)
-    , _tcsMinValue     :: !(Maybe (Textual Double))
-    , _tcsParentLabels :: !(Maybe ChartData)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TreemapChartSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tcsHintedLevels'
---
--- * 'tcsMaxValue'
---
--- * 'tcsHeaderColor'
---
--- * 'tcsSizeData'
---
--- * 'tcsColorData'
---
--- * 'tcsHideTooltips'
---
--- * 'tcsLevels'
---
--- * 'tcsLabels'
---
--- * 'tcsColorScale'
---
--- * 'tcsTextFormat'
---
--- * 'tcsMinValue'
---
--- * 'tcsParentLabels'
-treemapChartSpec
-    :: TreemapChartSpec
-treemapChartSpec =
-  TreemapChartSpec'
-    { _tcsHintedLevels = Nothing
-    , _tcsMaxValue = Nothing
-    , _tcsHeaderColor = Nothing
-    , _tcsSizeData = Nothing
-    , _tcsColorData = Nothing
-    , _tcsHideTooltips = Nothing
-    , _tcsLevels = Nothing
-    , _tcsLabels = Nothing
-    , _tcsColorScale = Nothing
-    , _tcsTextFormat = Nothing
-    , _tcsMinValue = Nothing
-    , _tcsParentLabels = Nothing
-    }
-
-
--- | The number of additional data levels beyond the labeled levels to be
--- shown on the treemap chart. These levels are not interactive and are
--- shown without their labels. Defaults to 0 if not specified.
-tcsHintedLevels :: Lens' TreemapChartSpec (Maybe Int32)
-tcsHintedLevels
-  = lens _tcsHintedLevels
-      (\ s a -> s{_tcsHintedLevels = a})
-      . mapping _Coerce
-
--- | The maximum possible data value. Cells with values greater than this
--- will have the same color as cells with this value. If not specified,
--- defaults to the actual maximum value from color_data, or the maximum
--- value from size_data if color_data is not specified.
-tcsMaxValue :: Lens' TreemapChartSpec (Maybe Double)
-tcsMaxValue
-  = lens _tcsMaxValue (\ s a -> s{_tcsMaxValue = a}) .
-      mapping _Coerce
-
--- | The background color for header cells.
-tcsHeaderColor :: Lens' TreemapChartSpec (Maybe Color)
-tcsHeaderColor
-  = lens _tcsHeaderColor
-      (\ s a -> s{_tcsHeaderColor = a})
-
--- | The data that determines the size of each treemap data cell. This data
--- is expected to be numeric. The cells corresponding to non-numeric or
--- missing data will not be rendered. If color_data is not specified, this
--- data is used to determine data cell background colors as well.
-tcsSizeData :: Lens' TreemapChartSpec (Maybe ChartData)
-tcsSizeData
-  = lens _tcsSizeData (\ s a -> s{_tcsSizeData = a})
-
--- | The data that determines the background color of each treemap data cell.
--- This field is optional. If not specified, size_data is used to determine
--- background colors. If specified, the data is expected to be numeric.
--- color_scale will determine how the values in this data map to data cell
--- background colors.
-tcsColorData :: Lens' TreemapChartSpec (Maybe ChartData)
-tcsColorData
-  = lens _tcsColorData (\ s a -> s{_tcsColorData = a})
-
--- | True to hide tooltips.
-tcsHideTooltips :: Lens' TreemapChartSpec (Maybe Bool)
-tcsHideTooltips
-  = lens _tcsHideTooltips
-      (\ s a -> s{_tcsHideTooltips = a})
-
--- | The number of data levels to show on the treemap chart. These levels are
--- interactive and are shown with their labels. Defaults to 2 if not
--- specified.
-tcsLevels :: Lens' TreemapChartSpec (Maybe Int32)
-tcsLevels
-  = lens _tcsLevels (\ s a -> s{_tcsLevels = a}) .
-      mapping _Coerce
-
--- | The data that contains the treemap cell labels.
-tcsLabels :: Lens' TreemapChartSpec (Maybe ChartData)
-tcsLabels
-  = lens _tcsLabels (\ s a -> s{_tcsLabels = a})
-
--- | The color scale for data cells in the treemap chart. Data cells are
--- assigned colors based on their color values. These color values come
--- from color_data, or from size_data if color_data is not specified. Cells
--- with color values less than or equal to min_value will have
--- minValueColor as their background color. Cells with color values greater
--- than or equal to max_value will have maxValueColor as their background
--- color. Cells with color values between min_value and max_value will have
--- background colors on a gradient between minValueColor and maxValueColor,
--- the midpoint of the gradient being midValueColor. Cells with missing or
--- non-numeric color values will have noDataColor as their background
--- color.
-tcsColorScale :: Lens' TreemapChartSpec (Maybe TreemapChartColorScale)
-tcsColorScale
-  = lens _tcsColorScale
-      (\ s a -> s{_tcsColorScale = a})
-
--- | The text format for all labels on the chart.
-tcsTextFormat :: Lens' TreemapChartSpec (Maybe TextFormat)
-tcsTextFormat
-  = lens _tcsTextFormat
-      (\ s a -> s{_tcsTextFormat = a})
-
--- | The minimum possible data value. Cells with values less than this will
--- have the same color as cells with this value. If not specified, defaults
--- to the actual minimum value from color_data, or the minimum value from
--- size_data if color_data is not specified.
-tcsMinValue :: Lens' TreemapChartSpec (Maybe Double)
-tcsMinValue
-  = lens _tcsMinValue (\ s a -> s{_tcsMinValue = a}) .
-      mapping _Coerce
-
--- | The data the contains the treemap cells\' parent labels.
-tcsParentLabels :: Lens' TreemapChartSpec (Maybe ChartData)
-tcsParentLabels
-  = lens _tcsParentLabels
-      (\ s a -> s{_tcsParentLabels = a})
-
-instance FromJSON TreemapChartSpec where
-        parseJSON
-          = withObject "TreemapChartSpec"
-              (\ o ->
-                 TreemapChartSpec' <$>
-                   (o .:? "hintedLevels") <*> (o .:? "maxValue") <*>
-                     (o .:? "headerColor")
-                     <*> (o .:? "sizeData")
-                     <*> (o .:? "colorData")
-                     <*> (o .:? "hideTooltips")
-                     <*> (o .:? "levels")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "colorScale")
-                     <*> (o .:? "textFormat")
-                     <*> (o .:? "minValue")
-                     <*> (o .:? "parentLabels"))
-
-instance ToJSON TreemapChartSpec where
-        toJSON TreemapChartSpec'{..}
-          = object
-              (catMaybes
-                 [("hintedLevels" .=) <$> _tcsHintedLevels,
-                  ("maxValue" .=) <$> _tcsMaxValue,
-                  ("headerColor" .=) <$> _tcsHeaderColor,
-                  ("sizeData" .=) <$> _tcsSizeData,
-                  ("colorData" .=) <$> _tcsColorData,
-                  ("hideTooltips" .=) <$> _tcsHideTooltips,
-                  ("levels" .=) <$> _tcsLevels,
-                  ("labels" .=) <$> _tcsLabels,
-                  ("colorScale" .=) <$> _tcsColorScale,
-                  ("textFormat" .=) <$> _tcsTextFormat,
-                  ("minValue" .=) <$> _tcsMinValue,
-                  ("parentLabels" .=) <$> _tcsParentLabels])
-
--- | A rule describing a conditional format.
---
--- /See:/ 'conditionalFormatRule' smart constructor.
-data ConditionalFormatRule =
-  ConditionalFormatRule'
-    { _cfrBooleanRule  :: !(Maybe BooleanRule)
-    , _cfrGradientRule :: !(Maybe GradientRule)
-    , _cfrRanges       :: !(Maybe [GridRange])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ConditionalFormatRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cfrBooleanRule'
---
--- * 'cfrGradientRule'
---
--- * 'cfrRanges'
-conditionalFormatRule
-    :: ConditionalFormatRule
-conditionalFormatRule =
-  ConditionalFormatRule'
-    { _cfrBooleanRule = Nothing
-    , _cfrGradientRule = Nothing
-    , _cfrRanges = Nothing
-    }
-
-
--- | The formatting is either \"on\" or \"off\" according to the rule.
-cfrBooleanRule :: Lens' ConditionalFormatRule (Maybe BooleanRule)
-cfrBooleanRule
-  = lens _cfrBooleanRule
-      (\ s a -> s{_cfrBooleanRule = a})
-
--- | The formatting will vary based on the gradients in the rule.
-cfrGradientRule :: Lens' ConditionalFormatRule (Maybe GradientRule)
-cfrGradientRule
-  = lens _cfrGradientRule
-      (\ s a -> s{_cfrGradientRule = a})
-
--- | The ranges that are formatted if the condition is true. All the ranges
--- must be on the same grid.
-cfrRanges :: Lens' ConditionalFormatRule [GridRange]
-cfrRanges
-  = lens _cfrRanges (\ s a -> s{_cfrRanges = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ConditionalFormatRule where
-        parseJSON
-          = withObject "ConditionalFormatRule"
-              (\ o ->
-                 ConditionalFormatRule' <$>
-                   (o .:? "booleanRule") <*> (o .:? "gradientRule") <*>
-                     (o .:? "ranges" .!= mempty))
-
-instance ToJSON ConditionalFormatRule where
-        toJSON ConditionalFormatRule'{..}
-          = object
-              (catMaybes
-                 [("booleanRule" .=) <$> _cfrBooleanRule,
-                  ("gradientRule" .=) <$> _cfrGradientRule,
-                  ("ranges" .=) <$> _cfrRanges])
-
--- | The specification for a basic chart. See BasicChartType for the list of
--- charts this supports.
---
--- /See:/ 'basicChartSpec' smart constructor.
-data BasicChartSpec =
-  BasicChartSpec'
-    { _basHeaderCount      :: !(Maybe (Textual Int32))
-    , _basLineSmoothing    :: !(Maybe Bool)
-    , _basInterpolateNulls :: !(Maybe Bool)
-    , _basStackedType      :: !(Maybe BasicChartSpecStackedType)
-    , _basLegendPosition   :: !(Maybe BasicChartSpecLegendPosition)
-    , _basSeries           :: !(Maybe [BasicChartSeries])
-    , _basCompareMode      :: !(Maybe BasicChartSpecCompareMode)
-    , _basChartType        :: !(Maybe BasicChartSpecChartType)
-    , _basThreeDimensional :: !(Maybe Bool)
-    , _basDomains          :: !(Maybe [BasicChartDomain])
-    , _basAxis             :: !(Maybe [BasicChartAxis])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BasicChartSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'basHeaderCount'
---
--- * 'basLineSmoothing'
---
--- * 'basInterpolateNulls'
---
--- * 'basStackedType'
---
--- * 'basLegendPosition'
---
--- * 'basSeries'
---
--- * 'basCompareMode'
---
--- * 'basChartType'
---
--- * 'basThreeDimensional'
---
--- * 'basDomains'
---
--- * 'basAxis'
-basicChartSpec
-    :: BasicChartSpec
-basicChartSpec =
-  BasicChartSpec'
-    { _basHeaderCount = Nothing
-    , _basLineSmoothing = Nothing
-    , _basInterpolateNulls = Nothing
-    , _basStackedType = Nothing
-    , _basLegendPosition = Nothing
-    , _basSeries = Nothing
-    , _basCompareMode = Nothing
-    , _basChartType = Nothing
-    , _basThreeDimensional = Nothing
-    , _basDomains = Nothing
-    , _basAxis = Nothing
-    }
-
-
--- | The number of rows or columns in the data that are \"headers\". If not
--- set, Google Sheets will guess how many rows are headers based on the
--- data. (Note that BasicChartAxis.title may override the axis title
--- inferred from the header values.)
-basHeaderCount :: Lens' BasicChartSpec (Maybe Int32)
-basHeaderCount
-  = lens _basHeaderCount
-      (\ s a -> s{_basHeaderCount = a})
-      . mapping _Coerce
-
--- | Gets whether all lines should be rendered smooth or straight by default.
--- Applies to Line charts.
-basLineSmoothing :: Lens' BasicChartSpec (Maybe Bool)
-basLineSmoothing
-  = lens _basLineSmoothing
-      (\ s a -> s{_basLineSmoothing = a})
-
--- | If some values in a series are missing, gaps may appear in the chart
--- (e.g, segments of lines in a line chart will be missing). To eliminate
--- these gaps set this to true. Applies to Line, Area, and Combo charts.
-basInterpolateNulls :: Lens' BasicChartSpec (Maybe Bool)
-basInterpolateNulls
-  = lens _basInterpolateNulls
-      (\ s a -> s{_basInterpolateNulls = a})
-
--- | The stacked type for charts that support vertical stacking. Applies to
--- Area, Bar, Column, Combo, and Stepped Area charts.
-basStackedType :: Lens' BasicChartSpec (Maybe BasicChartSpecStackedType)
-basStackedType
-  = lens _basStackedType
-      (\ s a -> s{_basStackedType = a})
-
--- | The position of the chart legend.
-basLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)
-basLegendPosition
-  = lens _basLegendPosition
-      (\ s a -> s{_basLegendPosition = a})
-
--- | The data this chart is visualizing.
-basSeries :: Lens' BasicChartSpec [BasicChartSeries]
-basSeries
-  = lens _basSeries (\ s a -> s{_basSeries = a}) .
-      _Default
-      . _Coerce
-
--- | The behavior of tooltips and data highlighting when hovering on data and
--- chart area.
-basCompareMode :: Lens' BasicChartSpec (Maybe BasicChartSpecCompareMode)
-basCompareMode
-  = lens _basCompareMode
-      (\ s a -> s{_basCompareMode = a})
-
--- | The type of the chart.
-basChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)
-basChartType
-  = lens _basChartType (\ s a -> s{_basChartType = a})
-
--- | True to make the chart 3D. Applies to Bar and Column charts.
-basThreeDimensional :: Lens' BasicChartSpec (Maybe Bool)
-basThreeDimensional
-  = lens _basThreeDimensional
-      (\ s a -> s{_basThreeDimensional = a})
-
--- | The domain of data this is charting. Only a single domain is supported.
-basDomains :: Lens' BasicChartSpec [BasicChartDomain]
-basDomains
-  = lens _basDomains (\ s a -> s{_basDomains = a}) .
-      _Default
-      . _Coerce
-
--- | The axis on the chart.
-basAxis :: Lens' BasicChartSpec [BasicChartAxis]
-basAxis
-  = lens _basAxis (\ s a -> s{_basAxis = a}) . _Default
-      . _Coerce
-
-instance FromJSON BasicChartSpec where
-        parseJSON
-          = withObject "BasicChartSpec"
-              (\ o ->
-                 BasicChartSpec' <$>
-                   (o .:? "headerCount") <*> (o .:? "lineSmoothing") <*>
-                     (o .:? "interpolateNulls")
-                     <*> (o .:? "stackedType")
-                     <*> (o .:? "legendPosition")
-                     <*> (o .:? "series" .!= mempty)
-                     <*> (o .:? "compareMode")
-                     <*> (o .:? "chartType")
-                     <*> (o .:? "threeDimensional")
-                     <*> (o .:? "domains" .!= mempty)
-                     <*> (o .:? "axis" .!= mempty))
-
-instance ToJSON BasicChartSpec where
-        toJSON BasicChartSpec'{..}
-          = object
-              (catMaybes
-                 [("headerCount" .=) <$> _basHeaderCount,
-                  ("lineSmoothing" .=) <$> _basLineSmoothing,
-                  ("interpolateNulls" .=) <$> _basInterpolateNulls,
-                  ("stackedType" .=) <$> _basStackedType,
-                  ("legendPosition" .=) <$> _basLegendPosition,
-                  ("series" .=) <$> _basSeries,
-                  ("compareMode" .=) <$> _basCompareMode,
-                  ("chartType" .=) <$> _basChartType,
-                  ("threeDimensional" .=) <$> _basThreeDimensional,
-                  ("domains" .=) <$> _basDomains,
-                  ("axis" .=) <$> _basAxis])
-
--- | A group name and a list of items from the source data that should be
--- placed in the group with this name.
---
--- /See:/ 'manualRuleGroup' smart constructor.
-data ManualRuleGroup =
-  ManualRuleGroup'
-    { _mrgItems     :: !(Maybe [ExtendedValue])
-    , _mrgGroupName :: !(Maybe ExtendedValue)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ManualRuleGroup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mrgItems'
---
--- * 'mrgGroupName'
-manualRuleGroup
-    :: ManualRuleGroup
-manualRuleGroup =
-  ManualRuleGroup' {_mrgItems = Nothing, _mrgGroupName = Nothing}
-
-
--- | The items in the source data that should be placed into this group. Each
--- item may be a string, number, or boolean. Items may appear in at most
--- one group within a given ManualRule. Items that do not appear in any
--- group will appear on their own.
-mrgItems :: Lens' ManualRuleGroup [ExtendedValue]
-mrgItems
-  = lens _mrgItems (\ s a -> s{_mrgItems = a}) .
-      _Default
-      . _Coerce
-
--- | The group name, which must be a string. Each group in a given ManualRule
--- must have a unique group name.
-mrgGroupName :: Lens' ManualRuleGroup (Maybe ExtendedValue)
-mrgGroupName
-  = lens _mrgGroupName (\ s a -> s{_mrgGroupName = a})
-
-instance FromJSON ManualRuleGroup where
-        parseJSON
-          = withObject "ManualRuleGroup"
-              (\ o ->
-                 ManualRuleGroup' <$>
-                   (o .:? "items" .!= mempty) <*> (o .:? "groupName"))
-
-instance ToJSON ManualRuleGroup where
-        toJSON ManualRuleGroup'{..}
-          = object
-              (catMaybes
-                 [("items" .=) <$> _mrgItems,
-                  ("groupName" .=) <$> _mrgGroupName])
-
--- | Adds a new conditional format rule at the given index. All subsequent
--- rules\' indexes are incremented.
---
--- /See:/ 'addConditionalFormatRuleRequest' smart constructor.
-data AddConditionalFormatRuleRequest =
-  AddConditionalFormatRuleRequest'
-    { _acfrrRule  :: !(Maybe ConditionalFormatRule)
-    , _acfrrIndex :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddConditionalFormatRuleRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acfrrRule'
---
--- * 'acfrrIndex'
-addConditionalFormatRuleRequest
-    :: AddConditionalFormatRuleRequest
-addConditionalFormatRuleRequest =
-  AddConditionalFormatRuleRequest' {_acfrrRule = Nothing, _acfrrIndex = Nothing}
-
-
--- | The rule to add.
-acfrrRule :: Lens' AddConditionalFormatRuleRequest (Maybe ConditionalFormatRule)
-acfrrRule
-  = lens _acfrrRule (\ s a -> s{_acfrrRule = a})
-
--- | The zero-based index where the rule should be inserted.
-acfrrIndex :: Lens' AddConditionalFormatRuleRequest (Maybe Int32)
-acfrrIndex
-  = lens _acfrrIndex (\ s a -> s{_acfrrIndex = a}) .
-      mapping _Coerce
-
-instance FromJSON AddConditionalFormatRuleRequest
-         where
-        parseJSON
-          = withObject "AddConditionalFormatRuleRequest"
-              (\ o ->
-                 AddConditionalFormatRuleRequest' <$>
-                   (o .:? "rule") <*> (o .:? "index"))
-
-instance ToJSON AddConditionalFormatRuleRequest where
-        toJSON AddConditionalFormatRuleRequest'{..}
-          = object
-              (catMaybes
-                 [("rule" .=) <$> _acfrrRule,
-                  ("index" .=) <$> _acfrrIndex])
-
--- | Developer metadata associated with a location or object in a
--- spreadsheet. Developer metadata may be used to associate arbitrary data
--- with various parts of a spreadsheet and will remain associated at those
--- locations as they move around and the spreadsheet is edited. For
--- example, if developer metadata is associated with row 5 and another row
--- is then subsequently inserted above row 5, that original metadata will
--- still be associated with the row it was first associated with (what is
--- now row 6). If the associated object is deleted its metadata is deleted
--- too.
---
--- /See:/ 'developerMetadata' smart constructor.
-data DeveloperMetadata =
-  DeveloperMetadata'
-    { _dmLocation      :: !(Maybe DeveloperMetadataLocation)
-    , _dmMetadataId    :: !(Maybe (Textual Int32))
-    , _dmVisibility    :: !(Maybe DeveloperMetadataVisibility)
-    , _dmMetadataKey   :: !(Maybe Text)
-    , _dmMetadataValue :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeveloperMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmLocation'
---
--- * 'dmMetadataId'
---
--- * 'dmVisibility'
---
--- * 'dmMetadataKey'
---
--- * 'dmMetadataValue'
-developerMetadata
-    :: DeveloperMetadata
-developerMetadata =
-  DeveloperMetadata'
-    { _dmLocation = Nothing
-    , _dmMetadataId = Nothing
-    , _dmVisibility = Nothing
-    , _dmMetadataKey = Nothing
-    , _dmMetadataValue = Nothing
-    }
-
-
--- | The location where the metadata is associated.
-dmLocation :: Lens' DeveloperMetadata (Maybe DeveloperMetadataLocation)
-dmLocation
-  = lens _dmLocation (\ s a -> s{_dmLocation = a})
-
--- | The spreadsheet-scoped unique ID that identifies the metadata. IDs may
--- be specified when metadata is created, otherwise one will be randomly
--- generated and assigned. Must be positive.
-dmMetadataId :: Lens' DeveloperMetadata (Maybe Int32)
-dmMetadataId
-  = lens _dmMetadataId (\ s a -> s{_dmMetadataId = a})
-      . mapping _Coerce
-
--- | The metadata visibility. Developer metadata must always have a
--- visibility specified.
-dmVisibility :: Lens' DeveloperMetadata (Maybe DeveloperMetadataVisibility)
-dmVisibility
-  = lens _dmVisibility (\ s a -> s{_dmVisibility = a})
-
--- | The metadata key. There may be multiple metadata in a spreadsheet with
--- the same key. Developer metadata must always have a key specified.
-dmMetadataKey :: Lens' DeveloperMetadata (Maybe Text)
-dmMetadataKey
-  = lens _dmMetadataKey
-      (\ s a -> s{_dmMetadataKey = a})
-
--- | Data associated with the metadata\'s key.
-dmMetadataValue :: Lens' DeveloperMetadata (Maybe Text)
-dmMetadataValue
-  = lens _dmMetadataValue
-      (\ s a -> s{_dmMetadataValue = a})
-
-instance FromJSON DeveloperMetadata where
-        parseJSON
-          = withObject "DeveloperMetadata"
-              (\ o ->
-                 DeveloperMetadata' <$>
-                   (o .:? "location") <*> (o .:? "metadataId") <*>
-                     (o .:? "visibility")
-                     <*> (o .:? "metadataKey")
-                     <*> (o .:? "metadataValue"))
-
-instance ToJSON DeveloperMetadata where
-        toJSON DeveloperMetadata'{..}
-          = object
-              (catMaybes
-                 [("location" .=) <$> _dmLocation,
-                  ("metadataId" .=) <$> _dmMetadataId,
-                  ("visibility" .=) <$> _dmVisibility,
-                  ("metadataKey" .=) <$> _dmMetadataKey,
-                  ("metadataValue" .=) <$> _dmMetadataValue])
-
--- | A color scale for a treemap chart.
---
--- /See:/ 'treemapChartColorScale' smart constructor.
-data TreemapChartColorScale =
-  TreemapChartColorScale'
-    { _tccsMinValueColor :: !(Maybe Color)
-    , _tccsNoDataColor   :: !(Maybe Color)
-    , _tccsMaxValueColor :: !(Maybe Color)
-    , _tccsMidValueColor :: !(Maybe Color)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TreemapChartColorScale' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tccsMinValueColor'
---
--- * 'tccsNoDataColor'
---
--- * 'tccsMaxValueColor'
---
--- * 'tccsMidValueColor'
-treemapChartColorScale
-    :: TreemapChartColorScale
-treemapChartColorScale =
-  TreemapChartColorScale'
-    { _tccsMinValueColor = Nothing
-    , _tccsNoDataColor = Nothing
-    , _tccsMaxValueColor = Nothing
-    , _tccsMidValueColor = Nothing
-    }
-
-
--- | The background color for cells with a color value less than or equal to
--- minValue. Defaults to #dc3912 if not specified.
-tccsMinValueColor :: Lens' TreemapChartColorScale (Maybe Color)
-tccsMinValueColor
-  = lens _tccsMinValueColor
-      (\ s a -> s{_tccsMinValueColor = a})
-
--- | The background color for cells that have no color data associated with
--- them. Defaults to #000000 if not specified.
-tccsNoDataColor :: Lens' TreemapChartColorScale (Maybe Color)
-tccsNoDataColor
-  = lens _tccsNoDataColor
-      (\ s a -> s{_tccsNoDataColor = a})
-
--- | The background color for cells with a color value greater than or equal
--- to maxValue. Defaults to #109618 if not specified.
-tccsMaxValueColor :: Lens' TreemapChartColorScale (Maybe Color)
-tccsMaxValueColor
-  = lens _tccsMaxValueColor
-      (\ s a -> s{_tccsMaxValueColor = a})
-
--- | The background color for cells with a color value at the midpoint
--- between minValue and maxValue. Defaults to #efe6dc if not specified.
-tccsMidValueColor :: Lens' TreemapChartColorScale (Maybe Color)
-tccsMidValueColor
-  = lens _tccsMidValueColor
-      (\ s a -> s{_tccsMidValueColor = a})
-
-instance FromJSON TreemapChartColorScale where
-        parseJSON
-          = withObject "TreemapChartColorScale"
-              (\ o ->
-                 TreemapChartColorScale' <$>
-                   (o .:? "minValueColor") <*> (o .:? "noDataColor") <*>
-                     (o .:? "maxValueColor")
-                     <*> (o .:? "midValueColor"))
-
-instance ToJSON TreemapChartColorScale where
-        toJSON TreemapChartColorScale'{..}
-          = object
-              (catMaybes
-                 [("minValueColor" .=) <$> _tccsMinValueColor,
-                  ("noDataColor" .=) <$> _tccsNoDataColor,
-                  ("maxValueColor" .=) <$> _tccsMaxValueColor,
-                  ("midValueColor" .=) <$> _tccsMidValueColor])
-
--- | The result of duplicating a sheet.
---
--- /See:/ 'duplicateSheetResponse' smart constructor.
-newtype DuplicateSheetResponse =
-  DuplicateSheetResponse'
-    { _dsrProperties :: Maybe SheetProperties
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DuplicateSheetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsrProperties'
-duplicateSheetResponse
-    :: DuplicateSheetResponse
-duplicateSheetResponse = DuplicateSheetResponse' {_dsrProperties = Nothing}
-
-
--- | The properties of the duplicate sheet.
-dsrProperties :: Lens' DuplicateSheetResponse (Maybe SheetProperties)
-dsrProperties
-  = lens _dsrProperties
-      (\ s a -> s{_dsrProperties = a})
-
-instance FromJSON DuplicateSheetResponse where
-        parseJSON
-          = withObject "DuplicateSheetResponse"
-              (\ o ->
-                 DuplicateSheetResponse' <$> (o .:? "properties"))
-
-instance ToJSON DuplicateSheetResponse where
-        toJSON DuplicateSheetResponse'{..}
-          = object
-              (catMaybes [("properties" .=) <$> _dsrProperties])
-
--- | The format of a run of text in a cell. Absent values indicate that the
--- field isn\'t specified.
---
--- /See:/ 'textFormat' smart constructor.
-data TextFormat =
-  TextFormat'
-    { _tfFontFamily      :: !(Maybe Text)
-    , _tfForegRoundColor :: !(Maybe Color)
-    , _tfFontSize        :: !(Maybe (Textual Int32))
-    , _tfUnderline       :: !(Maybe Bool)
-    , _tfItalic          :: !(Maybe Bool)
-    , _tfBold            :: !(Maybe Bool)
-    , _tfStrikethrough   :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TextFormat' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tfFontFamily'
---
--- * 'tfForegRoundColor'
---
--- * 'tfFontSize'
---
--- * 'tfUnderline'
---
--- * 'tfItalic'
---
--- * 'tfBold'
---
--- * 'tfStrikethrough'
-textFormat
-    :: TextFormat
-textFormat =
-  TextFormat'
-    { _tfFontFamily = Nothing
-    , _tfForegRoundColor = Nothing
-    , _tfFontSize = Nothing
-    , _tfUnderline = Nothing
-    , _tfItalic = Nothing
-    , _tfBold = Nothing
-    , _tfStrikethrough = Nothing
-    }
-
-
--- | The font family.
-tfFontFamily :: Lens' TextFormat (Maybe Text)
-tfFontFamily
-  = lens _tfFontFamily (\ s a -> s{_tfFontFamily = a})
-
--- | The foreground color of the text.
-tfForegRoundColor :: Lens' TextFormat (Maybe Color)
-tfForegRoundColor
-  = lens _tfForegRoundColor
-      (\ s a -> s{_tfForegRoundColor = a})
-
--- | The size of the font.
-tfFontSize :: Lens' TextFormat (Maybe Int32)
-tfFontSize
-  = lens _tfFontSize (\ s a -> s{_tfFontSize = a}) .
-      mapping _Coerce
-
--- | True if the text is underlined.
-tfUnderline :: Lens' TextFormat (Maybe Bool)
-tfUnderline
-  = lens _tfUnderline (\ s a -> s{_tfUnderline = a})
-
--- | True if the text is italicized.
-tfItalic :: Lens' TextFormat (Maybe Bool)
-tfItalic = lens _tfItalic (\ s a -> s{_tfItalic = a})
-
--- | True if the text is bold.
-tfBold :: Lens' TextFormat (Maybe Bool)
-tfBold = lens _tfBold (\ s a -> s{_tfBold = a})
-
--- | True if the text has a strikethrough.
-tfStrikethrough :: Lens' TextFormat (Maybe Bool)
-tfStrikethrough
-  = lens _tfStrikethrough
-      (\ s a -> s{_tfStrikethrough = a})
-
-instance FromJSON TextFormat where
-        parseJSON
-          = withObject "TextFormat"
-              (\ o ->
-                 TextFormat' <$>
-                   (o .:? "fontFamily") <*> (o .:? "foregroundColor")
-                     <*> (o .:? "fontSize")
-                     <*> (o .:? "underline")
-                     <*> (o .:? "italic")
-                     <*> (o .:? "bold")
-                     <*> (o .:? "strikethrough"))
-
-instance ToJSON TextFormat where
-        toJSON TextFormat'{..}
-          = object
-              (catMaybes
-                 [("fontFamily" .=) <$> _tfFontFamily,
-                  ("foregroundColor" .=) <$> _tfForegRoundColor,
-                  ("fontSize" .=) <$> _tfFontSize,
-                  ("underline" .=) <$> _tfUnderline,
-                  ("italic" .=) <$> _tfItalic, ("bold" .=) <$> _tfBold,
-                  ("strikethrough" .=) <$> _tfStrikethrough])
-
--- | A request to create developer metadata.
---
--- /See:/ 'createDeveloperMetadataRequest' smart constructor.
-newtype CreateDeveloperMetadataRequest =
-  CreateDeveloperMetadataRequest'
-    { _cDeveloperMetadata :: Maybe DeveloperMetadata
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateDeveloperMetadataRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cDeveloperMetadata'
-createDeveloperMetadataRequest
-    :: CreateDeveloperMetadataRequest
-createDeveloperMetadataRequest =
-  CreateDeveloperMetadataRequest' {_cDeveloperMetadata = Nothing}
-
-
--- | The developer metadata to create.
-cDeveloperMetadata :: Lens' CreateDeveloperMetadataRequest (Maybe DeveloperMetadata)
-cDeveloperMetadata
-  = lens _cDeveloperMetadata
-      (\ s a -> s{_cDeveloperMetadata = a})
-
-instance FromJSON CreateDeveloperMetadataRequest
-         where
-        parseJSON
-          = withObject "CreateDeveloperMetadataRequest"
-              (\ o ->
-                 CreateDeveloperMetadataRequest' <$>
-                   (o .:? "developerMetadata"))
-
-instance ToJSON CreateDeveloperMetadataRequest where
-        toJSON CreateDeveloperMetadataRequest'{..}
-          = object
-              (catMaybes
-                 [("developerMetadata" .=) <$> _cDeveloperMetadata])
-
--- | The response when clearing a range of values in a spreadsheet.
---
--- /See:/ 'batchClearValuesResponse' smart constructor.
-data BatchClearValuesResponse =
-  BatchClearValuesResponse'
-    { _bcvrClearedRanges :: !(Maybe [Text])
-    , _bcvrSpreadsheetId :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchClearValuesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bcvrClearedRanges'
---
--- * 'bcvrSpreadsheetId'
-batchClearValuesResponse
-    :: BatchClearValuesResponse
-batchClearValuesResponse =
-  BatchClearValuesResponse'
-    {_bcvrClearedRanges = Nothing, _bcvrSpreadsheetId = Nothing}
-
-
--- | The ranges that were cleared, in A1 notation. (If the requests were for
--- an unbounded range or a ranger larger than the bounds of the sheet, this
--- will be the actual ranges that were cleared, bounded to the sheet\'s
--- limits.)
-bcvrClearedRanges :: Lens' BatchClearValuesResponse [Text]
-bcvrClearedRanges
-  = lens _bcvrClearedRanges
-      (\ s a -> s{_bcvrClearedRanges = a})
-      . _Default
-      . _Coerce
-
--- | The spreadsheet the updates were applied to.
-bcvrSpreadsheetId :: Lens' BatchClearValuesResponse (Maybe Text)
-bcvrSpreadsheetId
-  = lens _bcvrSpreadsheetId
-      (\ s a -> s{_bcvrSpreadsheetId = a})
-
-instance FromJSON BatchClearValuesResponse where
-        parseJSON
-          = withObject "BatchClearValuesResponse"
-              (\ o ->
-                 BatchClearValuesResponse' <$>
-                   (o .:? "clearedRanges" .!= mempty) <*>
-                     (o .:? "spreadsheetId"))
-
-instance ToJSON BatchClearValuesResponse where
-        toJSON BatchClearValuesResponse'{..}
-          = object
-              (catMaybes
-                 [("clearedRanges" .=) <$> _bcvrClearedRanges,
-                  ("spreadsheetId" .=) <$> _bcvrSpreadsheetId])
-
--- | A value range that was matched by one or more data filers.
---
--- /See:/ 'matchedValueRange' smart constructor.
-data MatchedValueRange =
-  MatchedValueRange'
-    { _mvrValueRange  :: !(Maybe ValueRange)
-    , _mvrDataFilters :: !(Maybe [DataFilter])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MatchedValueRange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mvrValueRange'
---
--- * 'mvrDataFilters'
-matchedValueRange
-    :: MatchedValueRange
-matchedValueRange =
-  MatchedValueRange' {_mvrValueRange = Nothing, _mvrDataFilters = Nothing}
-
-
--- | The values matched by the DataFilter.
-mvrValueRange :: Lens' MatchedValueRange (Maybe ValueRange)
-mvrValueRange
-  = lens _mvrValueRange
-      (\ s a -> s{_mvrValueRange = a})
-
--- | The DataFilters from the request that matched the range of values.
-mvrDataFilters :: Lens' MatchedValueRange [DataFilter]
-mvrDataFilters
-  = lens _mvrDataFilters
-      (\ s a -> s{_mvrDataFilters = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON MatchedValueRange where
-        parseJSON
-          = withObject "MatchedValueRange"
-              (\ o ->
-                 MatchedValueRange' <$>
-                   (o .:? "valueRange") <*>
-                     (o .:? "dataFilters" .!= mempty))
-
-instance ToJSON MatchedValueRange where
-        toJSON MatchedValueRange'{..}
-          = object
-              (catMaybes
-                 [("valueRange" .=) <$> _mvrValueRange,
-                  ("dataFilters" .=) <$> _mvrDataFilters])
-
--- | The domain of a chart. For example, if charting stock prices over time,
--- this would be the date.
---
--- /See:/ 'basicChartDomain' smart constructor.
-data BasicChartDomain =
-  BasicChartDomain'
-    { _bcdReversed :: !(Maybe Bool)
-    , _bcdDomain   :: !(Maybe ChartData)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BasicChartDomain' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bcdReversed'
---
--- * 'bcdDomain'
-basicChartDomain
-    :: BasicChartDomain
-basicChartDomain =
-  BasicChartDomain' {_bcdReversed = Nothing, _bcdDomain = Nothing}
-
-
--- | True to reverse the order of the domain values (horizontal axis).
-bcdReversed :: Lens' BasicChartDomain (Maybe Bool)
-bcdReversed
-  = lens _bcdReversed (\ s a -> s{_bcdReversed = a})
-
--- | The data of the domain. For example, if charting stock prices over time,
--- this is the data representing the dates.
-bcdDomain :: Lens' BasicChartDomain (Maybe ChartData)
-bcdDomain
-  = lens _bcdDomain (\ s a -> s{_bcdDomain = a})
-
-instance FromJSON BasicChartDomain where
-        parseJSON
-          = withObject "BasicChartDomain"
-              (\ o ->
-                 BasicChartDomain' <$>
-                   (o .:? "reversed") <*> (o .:? "domain"))
-
-instance ToJSON BasicChartDomain where
-        toJSON BasicChartDomain'{..}
-          = object
-              (catMaybes
-                 [("reversed" .=) <$> _bcdReversed,
-                  ("domain" .=) <$> _bcdDomain])
-
--- | Allows you to organize the numeric values in a source data column into
--- buckets of a constant size. All values from HistogramRule.start to
--- HistogramRule.end are placed into groups of size HistogramRule.interval.
--- In addition, all values below HistogramRule.start are placed in one
--- group, and all values above HistogramRule.end are placed in another.
--- Only HistogramRule.interval is required, though if HistogramRule.start
--- and HistogramRule.end are both provided, HistogramRule.start must be
--- less than HistogramRule.end. For example, a pivot table showing average
--- purchase amount by age that has 50+ rows: +-----+-------------------+ |
--- Age | AVERAGE of Amount | +-----+-------------------+ | 16 | $27.13 | |
--- 17 | $5.24 | | 18 | $20.15 | ... +-----+-------------------+ could be
--- turned into a pivot table that looks like the one below by applying a
--- histogram group rule with a HistogramRule.start of 25, an
--- HistogramRule.interval of 20, and an HistogramRule.end of 65.
--- +-------------+-------------------+ | Grouped Age | AVERAGE of Amount |
--- +-------------+-------------------+ | \< 25 | $19.34 | | 25-45 | $31.43
--- | | 45-65 | $35.87 | | > 65 | $27.55 |
--- +-------------+-------------------+ | Grand Total | $29.12 |
--- +-------------+-------------------+
---
--- /See:/ 'histogramRule' smart constructor.
-data HistogramRule =
-  HistogramRule'
-    { _hrStart    :: !(Maybe (Textual Double))
-    , _hrInterval :: !(Maybe (Textual Double))
-    , _hrEnd      :: !(Maybe (Textual Double))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'HistogramRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hrStart'
---
--- * 'hrInterval'
---
--- * 'hrEnd'
-histogramRule
-    :: HistogramRule
-histogramRule =
-  HistogramRule' {_hrStart = Nothing, _hrInterval = Nothing, _hrEnd = Nothing}
-
-
--- | The minimum value at which items are placed into buckets of constant
--- size. Values below start are lumped into a single bucket. This field is
--- optional.
-hrStart :: Lens' HistogramRule (Maybe Double)
-hrStart
-  = lens _hrStart (\ s a -> s{_hrStart = a}) .
-      mapping _Coerce
-
--- | The size of the buckets that are created. Must be positive.
-hrInterval :: Lens' HistogramRule (Maybe Double)
-hrInterval
-  = lens _hrInterval (\ s a -> s{_hrInterval = a}) .
-      mapping _Coerce
-
--- | The maximum value at which items are placed into buckets of constant
--- size. Values above end are lumped into a single bucket. This field is
--- optional.
-hrEnd :: Lens' HistogramRule (Maybe Double)
-hrEnd
-  = lens _hrEnd (\ s a -> s{_hrEnd = a}) .
-      mapping _Coerce
-
-instance FromJSON HistogramRule where
-        parseJSON
-          = withObject "HistogramRule"
-              (\ o ->
-                 HistogramRule' <$>
-                   (o .:? "start") <*> (o .:? "interval") <*>
-                     (o .:? "end"))
-
-instance ToJSON HistogramRule where
-        toJSON HistogramRule'{..}
-          = object
-              (catMaybes
-                 [("start" .=) <$> _hrStart,
-                  ("interval" .=) <$> _hrInterval,
-                  ("end" .=) <$> _hrEnd])
-
--- | A developer metadata entry and the data filters specified in the
--- original request that matched it.
---
--- /See:/ 'matchedDeveloperMetadata' smart constructor.
-data MatchedDeveloperMetadata =
-  MatchedDeveloperMetadata'
-    { _mdmDataFilters       :: !(Maybe [DataFilter])
-    , _mdmDeveloperMetadata :: !(Maybe DeveloperMetadata)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MatchedDeveloperMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mdmDataFilters'
---
--- * 'mdmDeveloperMetadata'
-matchedDeveloperMetadata
-    :: MatchedDeveloperMetadata
-matchedDeveloperMetadata =
-  MatchedDeveloperMetadata'
-    {_mdmDataFilters = Nothing, _mdmDeveloperMetadata = Nothing}
-
-
--- | All filters matching the returned developer metadata.
-mdmDataFilters :: Lens' MatchedDeveloperMetadata [DataFilter]
-mdmDataFilters
-  = lens _mdmDataFilters
-      (\ s a -> s{_mdmDataFilters = a})
-      . _Default
-      . _Coerce
-
--- | The developer metadata matching the specified filters.
-mdmDeveloperMetadata :: Lens' MatchedDeveloperMetadata (Maybe DeveloperMetadata)
-mdmDeveloperMetadata
-  = lens _mdmDeveloperMetadata
-      (\ s a -> s{_mdmDeveloperMetadata = a})
-
-instance FromJSON MatchedDeveloperMetadata where
-        parseJSON
-          = withObject "MatchedDeveloperMetadata"
-              (\ o ->
-                 MatchedDeveloperMetadata' <$>
-                   (o .:? "dataFilters" .!= mempty) <*>
-                     (o .:? "developerMetadata"))
-
-instance ToJSON MatchedDeveloperMetadata where
-        toJSON MatchedDeveloperMetadata'{..}
-          = object
-              (catMaybes
-                 [("dataFilters" .=) <$> _mdmDataFilters,
-                  ("developerMetadata" .=) <$> _mdmDeveloperMetadata])
-
--- | Inserts cells into a range, shifting the existing cells over or down.
---
--- /See:/ 'insertRangeRequest' smart constructor.
-data InsertRangeRequest =
-  InsertRangeRequest'
-    { _irrShiftDimension :: !(Maybe InsertRangeRequestShiftDimension)
-    , _irrRange          :: !(Maybe GridRange)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InsertRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'irrShiftDimension'
---
--- * 'irrRange'
-insertRangeRequest
-    :: InsertRangeRequest
-insertRangeRequest =
-  InsertRangeRequest' {_irrShiftDimension = Nothing, _irrRange = Nothing}
-
-
--- | The dimension which will be shifted when inserting cells. If ROWS,
--- existing cells will be shifted down. If COLUMNS, existing cells will be
--- shifted right.
-irrShiftDimension :: Lens' InsertRangeRequest (Maybe InsertRangeRequestShiftDimension)
-irrShiftDimension
-  = lens _irrShiftDimension
-      (\ s a -> s{_irrShiftDimension = a})
-
--- | The range to insert new cells into.
-irrRange :: Lens' InsertRangeRequest (Maybe GridRange)
-irrRange = lens _irrRange (\ s a -> s{_irrRange = a})
-
-instance FromJSON InsertRangeRequest where
-        parseJSON
-          = withObject "InsertRangeRequest"
-              (\ o ->
-                 InsertRangeRequest' <$>
-                   (o .:? "shiftDimension") <*> (o .:? "range"))
-
-instance ToJSON InsertRangeRequest where
-        toJSON InsertRangeRequest'{..}
-          = object
-              (catMaybes
-                 [("shiftDimension" .=) <$> _irrShiftDimension,
-                  ("range" .=) <$> _irrRange])
-
--- | The amount of padding around the cell, in pixels. When updating padding,
--- every field must be specified.
---
--- /See:/ 'padding' smart constructor.
-data Padding =
-  Padding'
-    { _pBottom :: !(Maybe (Textual Int32))
-    , _pLeft   :: !(Maybe (Textual Int32))
-    , _pRight  :: !(Maybe (Textual Int32))
-    , _pTop    :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Padding' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pBottom'
---
--- * 'pLeft'
---
--- * 'pRight'
---
--- * 'pTop'
-padding
-    :: Padding
-padding =
-  Padding'
-    {_pBottom = Nothing, _pLeft = Nothing, _pRight = Nothing, _pTop = Nothing}
-
-
--- | The bottom padding of the cell.
-pBottom :: Lens' Padding (Maybe Int32)
-pBottom
-  = lens _pBottom (\ s a -> s{_pBottom = a}) .
-      mapping _Coerce
-
--- | The left padding of the cell.
-pLeft :: Lens' Padding (Maybe Int32)
-pLeft
-  = lens _pLeft (\ s a -> s{_pLeft = a}) .
-      mapping _Coerce
-
--- | The right padding of the cell.
-pRight :: Lens' Padding (Maybe Int32)
-pRight
-  = lens _pRight (\ s a -> s{_pRight = a}) .
-      mapping _Coerce
-
--- | The top padding of the cell.
-pTop :: Lens' Padding (Maybe Int32)
-pTop
-  = lens _pTop (\ s a -> s{_pTop = a}) .
-      mapping _Coerce
-
-instance FromJSON Padding where
-        parseJSON
-          = withObject "Padding"
-              (\ o ->
-                 Padding' <$>
-                   (o .:? "bottom") <*> (o .:? "left") <*>
-                     (o .:? "right")
-                     <*> (o .:? "top"))
-
-instance ToJSON Padding where
-        toJSON Padding'{..}
-          = object
-              (catMaybes
-                 [("bottom" .=) <$> _pBottom, ("left" .=) <$> _pLeft,
-                  ("right" .=) <$> _pRight, ("top" .=) <$> _pTop])
-
--- | The specifications of a chart.
---
--- /See:/ 'chartSpec' smart constructor.
-data ChartSpec =
-  ChartSpec'
-    { _csTitleTextPosition       :: !(Maybe TextPosition)
-    , _csFontName                :: !(Maybe Text)
-    , _csSubtitleTextPosition    :: !(Maybe TextPosition)
-    , _csBackgRoundColor         :: !(Maybe Color)
-    , _csCandlestickChart        :: !(Maybe CandlestickChartSpec)
-    , _csWaterfallChart          :: !(Maybe WaterfallChartSpec)
-    , _csTitleTextFormat         :: !(Maybe TextFormat)
-    , _csSubtitle                :: !(Maybe Text)
-    , _csAltText                 :: !(Maybe Text)
-    , _csHistogramChart          :: !(Maybe HistogramChartSpec)
-    , _csBubbleChart             :: !(Maybe BubbleChartSpec)
-    , _csMaximized               :: !(Maybe Bool)
-    , _csSubtitleTextFormat      :: !(Maybe TextFormat)
-    , _csTitle                   :: !(Maybe Text)
-    , _csPieChart                :: !(Maybe PieChartSpec)
-    , _csOrgChart                :: !(Maybe OrgChartSpec)
-    , _csTreemapChart            :: !(Maybe TreemapChartSpec)
-    , _csBasicChart              :: !(Maybe BasicChartSpec)
-    , _csHiddenDimensionStrategy :: !(Maybe ChartSpecHiddenDimensionStrategy)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ChartSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csTitleTextPosition'
---
--- * 'csFontName'
---
--- * 'csSubtitleTextPosition'
---
--- * 'csBackgRoundColor'
---
--- * 'csCandlestickChart'
---
--- * 'csWaterfallChart'
---
--- * 'csTitleTextFormat'
---
--- * 'csSubtitle'
---
--- * 'csAltText'
---
--- * 'csHistogramChart'
---
--- * 'csBubbleChart'
---
--- * 'csMaximized'
---
--- * 'csSubtitleTextFormat'
---
--- * 'csTitle'
---
--- * 'csPieChart'
---
--- * 'csOrgChart'
---
--- * 'csTreemapChart'
---
--- * 'csBasicChart'
---
--- * 'csHiddenDimensionStrategy'
-chartSpec
-    :: ChartSpec
-chartSpec =
-  ChartSpec'
-    { _csTitleTextPosition = Nothing
-    , _csFontName = Nothing
-    , _csSubtitleTextPosition = Nothing
-    , _csBackgRoundColor = Nothing
-    , _csCandlestickChart = Nothing
-    , _csWaterfallChart = Nothing
-    , _csTitleTextFormat = Nothing
-    , _csSubtitle = Nothing
-    , _csAltText = Nothing
-    , _csHistogramChart = Nothing
-    , _csBubbleChart = Nothing
-    , _csMaximized = Nothing
-    , _csSubtitleTextFormat = Nothing
-    , _csTitle = Nothing
-    , _csPieChart = Nothing
-    , _csOrgChart = Nothing
-    , _csTreemapChart = Nothing
-    , _csBasicChart = Nothing
-    , _csHiddenDimensionStrategy = Nothing
-    }
-
-
--- | The title text position. This field is optional.
-csTitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)
-csTitleTextPosition
-  = lens _csTitleTextPosition
-      (\ s a -> s{_csTitleTextPosition = a})
-
--- | The name of the font to use by default for all chart text (e.g. title,
--- axis labels, legend). If a font is specified for a specific part of the
--- chart it will override this font name.
-csFontName :: Lens' ChartSpec (Maybe Text)
-csFontName
-  = lens _csFontName (\ s a -> s{_csFontName = a})
-
--- | The subtitle text position. This field is optional.
-csSubtitleTextPosition :: Lens' ChartSpec (Maybe TextPosition)
-csSubtitleTextPosition
-  = lens _csSubtitleTextPosition
-      (\ s a -> s{_csSubtitleTextPosition = a})
-
--- | The background color of the entire chart. Not applicable to Org charts.
-csBackgRoundColor :: Lens' ChartSpec (Maybe Color)
-csBackgRoundColor
-  = lens _csBackgRoundColor
-      (\ s a -> s{_csBackgRoundColor = a})
-
--- | A candlestick chart specification.
-csCandlestickChart :: Lens' ChartSpec (Maybe CandlestickChartSpec)
-csCandlestickChart
-  = lens _csCandlestickChart
-      (\ s a -> s{_csCandlestickChart = a})
-
--- | A waterfall chart specification.
-csWaterfallChart :: Lens' ChartSpec (Maybe WaterfallChartSpec)
-csWaterfallChart
-  = lens _csWaterfallChart
-      (\ s a -> s{_csWaterfallChart = a})
-
--- | The title text format. Strikethrough and underline are not supported.
-csTitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)
-csTitleTextFormat
-  = lens _csTitleTextFormat
-      (\ s a -> s{_csTitleTextFormat = a})
-
--- | The subtitle of the chart.
-csSubtitle :: Lens' ChartSpec (Maybe Text)
-csSubtitle
-  = lens _csSubtitle (\ s a -> s{_csSubtitle = a})
-
--- | The alternative text that describes the chart. This is often used for
--- accessibility.
-csAltText :: Lens' ChartSpec (Maybe Text)
-csAltText
-  = lens _csAltText (\ s a -> s{_csAltText = a})
-
--- | A histogram chart specification.
-csHistogramChart :: Lens' ChartSpec (Maybe HistogramChartSpec)
-csHistogramChart
-  = lens _csHistogramChart
-      (\ s a -> s{_csHistogramChart = a})
-
--- | A bubble chart specification.
-csBubbleChart :: Lens' ChartSpec (Maybe BubbleChartSpec)
-csBubbleChart
-  = lens _csBubbleChart
-      (\ s a -> s{_csBubbleChart = a})
-
--- | True to make a chart fill the entire space in which it\'s rendered with
--- minimum padding. False to use the default padding. (Not applicable to
--- Geo and Org charts.)
-csMaximized :: Lens' ChartSpec (Maybe Bool)
-csMaximized
-  = lens _csMaximized (\ s a -> s{_csMaximized = a})
-
--- | The subtitle text format. Strikethrough and underline are not supported.
-csSubtitleTextFormat :: Lens' ChartSpec (Maybe TextFormat)
-csSubtitleTextFormat
-  = lens _csSubtitleTextFormat
-      (\ s a -> s{_csSubtitleTextFormat = a})
-
--- | The title of the chart.
-csTitle :: Lens' ChartSpec (Maybe Text)
-csTitle = lens _csTitle (\ s a -> s{_csTitle = a})
-
--- | A pie chart specification.
-csPieChart :: Lens' ChartSpec (Maybe PieChartSpec)
-csPieChart
-  = lens _csPieChart (\ s a -> s{_csPieChart = a})
-
--- | An org chart specification.
-csOrgChart :: Lens' ChartSpec (Maybe OrgChartSpec)
-csOrgChart
-  = lens _csOrgChart (\ s a -> s{_csOrgChart = a})
-
--- | A treemap chart specification.
-csTreemapChart :: Lens' ChartSpec (Maybe TreemapChartSpec)
-csTreemapChart
-  = lens _csTreemapChart
-      (\ s a -> s{_csTreemapChart = a})
-
--- | A basic chart specification, can be one of many kinds of charts. See
--- BasicChartType for the list of all charts this supports.
-csBasicChart :: Lens' ChartSpec (Maybe BasicChartSpec)
-csBasicChart
-  = lens _csBasicChart (\ s a -> s{_csBasicChart = a})
-
--- | Determines how the charts will use hidden rows or columns.
-csHiddenDimensionStrategy :: Lens' ChartSpec (Maybe ChartSpecHiddenDimensionStrategy)
-csHiddenDimensionStrategy
-  = lens _csHiddenDimensionStrategy
-      (\ s a -> s{_csHiddenDimensionStrategy = a})
-
-instance FromJSON ChartSpec where
-        parseJSON
-          = withObject "ChartSpec"
-              (\ o ->
-                 ChartSpec' <$>
-                   (o .:? "titleTextPosition") <*> (o .:? "fontName")
-                     <*> (o .:? "subtitleTextPosition")
-                     <*> (o .:? "backgroundColor")
-                     <*> (o .:? "candlestickChart")
-                     <*> (o .:? "waterfallChart")
-                     <*> (o .:? "titleTextFormat")
-                     <*> (o .:? "subtitle")
-                     <*> (o .:? "altText")
-                     <*> (o .:? "histogramChart")
-                     <*> (o .:? "bubbleChart")
-                     <*> (o .:? "maximized")
-                     <*> (o .:? "subtitleTextFormat")
-                     <*> (o .:? "title")
-                     <*> (o .:? "pieChart")
-                     <*> (o .:? "orgChart")
-                     <*> (o .:? "treemapChart")
-                     <*> (o .:? "basicChart")
-                     <*> (o .:? "hiddenDimensionStrategy"))
-
-instance ToJSON ChartSpec where
-        toJSON ChartSpec'{..}
-          = object
-              (catMaybes
-                 [("titleTextPosition" .=) <$> _csTitleTextPosition,
-                  ("fontName" .=) <$> _csFontName,
-                  ("subtitleTextPosition" .=) <$>
-                    _csSubtitleTextPosition,
-                  ("backgroundColor" .=) <$> _csBackgRoundColor,
-                  ("candlestickChart" .=) <$> _csCandlestickChart,
-                  ("waterfallChart" .=) <$> _csWaterfallChart,
-                  ("titleTextFormat" .=) <$> _csTitleTextFormat,
-                  ("subtitle" .=) <$> _csSubtitle,
-                  ("altText" .=) <$> _csAltText,
-                  ("histogramChart" .=) <$> _csHistogramChart,
-                  ("bubbleChart" .=) <$> _csBubbleChart,
-                  ("maximized" .=) <$> _csMaximized,
-                  ("subtitleTextFormat" .=) <$> _csSubtitleTextFormat,
-                  ("title" .=) <$> _csTitle,
-                  ("pieChart" .=) <$> _csPieChart,
-                  ("orgChart" .=) <$> _csOrgChart,
-                  ("treemapChart" .=) <$> _csTreemapChart,
-                  ("basicChart" .=) <$> _csBasicChart,
-                  ("hiddenDimensionStrategy" .=) <$>
-                    _csHiddenDimensionStrategy])
-
--- | Properties about a dimension.
---
--- /See:/ 'dimensionProperties' smart constructor.
-data DimensionProperties =
-  DimensionProperties'
-    { _dpHiddenByFilter    :: !(Maybe Bool)
-    , _dpPixelSize         :: !(Maybe (Textual Int32))
-    , _dpHiddenByUser      :: !(Maybe Bool)
-    , _dpDeveloperMetadata :: !(Maybe [DeveloperMetadata])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DimensionProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dpHiddenByFilter'
---
--- * 'dpPixelSize'
---
--- * 'dpHiddenByUser'
---
--- * 'dpDeveloperMetadata'
-dimensionProperties
-    :: DimensionProperties
-dimensionProperties =
-  DimensionProperties'
-    { _dpHiddenByFilter = Nothing
-    , _dpPixelSize = Nothing
-    , _dpHiddenByUser = Nothing
-    , _dpDeveloperMetadata = Nothing
-    }
-
-
--- | True if this dimension is being filtered. This field is read-only.
-dpHiddenByFilter :: Lens' DimensionProperties (Maybe Bool)
-dpHiddenByFilter
-  = lens _dpHiddenByFilter
-      (\ s a -> s{_dpHiddenByFilter = a})
-
--- | The height (if a row) or width (if a column) of the dimension in pixels.
-dpPixelSize :: Lens' DimensionProperties (Maybe Int32)
-dpPixelSize
-  = lens _dpPixelSize (\ s a -> s{_dpPixelSize = a}) .
-      mapping _Coerce
-
--- | True if this dimension is explicitly hidden.
-dpHiddenByUser :: Lens' DimensionProperties (Maybe Bool)
-dpHiddenByUser
-  = lens _dpHiddenByUser
-      (\ s a -> s{_dpHiddenByUser = a})
-
--- | The developer metadata associated with a single row or column.
-dpDeveloperMetadata :: Lens' DimensionProperties [DeveloperMetadata]
-dpDeveloperMetadata
-  = lens _dpDeveloperMetadata
-      (\ s a -> s{_dpDeveloperMetadata = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON DimensionProperties where
-        parseJSON
-          = withObject "DimensionProperties"
-              (\ o ->
-                 DimensionProperties' <$>
-                   (o .:? "hiddenByFilter") <*> (o .:? "pixelSize") <*>
-                     (o .:? "hiddenByUser")
-                     <*> (o .:? "developerMetadata" .!= mempty))
-
-instance ToJSON DimensionProperties where
-        toJSON DimensionProperties'{..}
-          = object
-              (catMaybes
-                 [("hiddenByFilter" .=) <$> _dpHiddenByFilter,
-                  ("pixelSize" .=) <$> _dpPixelSize,
-                  ("hiddenByUser" .=) <$> _dpHiddenByUser,
-                  ("developerMetadata" .=) <$> _dpDeveloperMetadata])
-
--- | Updates properties of the supplied banded range.
---
--- /See:/ 'updateBandingRequest' smart constructor.
-data UpdateBandingRequest =
-  UpdateBandingRequest'
-    { _ubrBandedRange :: !(Maybe BandedRange)
-    , _ubrFields      :: !(Maybe GFieldMask)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateBandingRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ubrBandedRange'
---
--- * 'ubrFields'
-updateBandingRequest
-    :: UpdateBandingRequest
-updateBandingRequest =
-  UpdateBandingRequest' {_ubrBandedRange = Nothing, _ubrFields = Nothing}
-
-
--- | The banded range to update with the new properties.
-ubrBandedRange :: Lens' UpdateBandingRequest (Maybe BandedRange)
-ubrBandedRange
-  = lens _ubrBandedRange
-      (\ s a -> s{_ubrBandedRange = a})
-
--- | The fields that should be updated. At least one field must be specified.
--- The root \`bandedRange\` is implied and should not be specified. A
--- single \`\"*\"\` can be used as short-hand for listing every field.
-ubrFields :: Lens' UpdateBandingRequest (Maybe GFieldMask)
-ubrFields
-  = lens _ubrFields (\ s a -> s{_ubrFields = a})
-
-instance FromJSON UpdateBandingRequest where
-        parseJSON
-          = withObject "UpdateBandingRequest"
-              (\ o ->
-                 UpdateBandingRequest' <$>
-                   (o .:? "bandedRange") <*> (o .:? "fields"))
-
-instance ToJSON UpdateBandingRequest where
-        toJSON UpdateBandingRequest'{..}
-          = object
-              (catMaybes
-                 [("bandedRange" .=) <$> _ubrBandedRange,
-                  ("fields" .=) <$> _ubrFields])
-
--- | The response when retrieving more than one range of values in a
--- spreadsheet.
---
--- /See:/ 'batchGetValuesResponse' smart constructor.
-data BatchGetValuesResponse =
-  BatchGetValuesResponse'
-    { _bgvrSpreadsheetId :: !(Maybe Text)
-    , _bgvrValueRanges   :: !(Maybe [ValueRange])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BatchGetValuesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bgvrSpreadsheetId'
---
--- * 'bgvrValueRanges'
-batchGetValuesResponse
-    :: BatchGetValuesResponse
-batchGetValuesResponse =
-  BatchGetValuesResponse'
-    {_bgvrSpreadsheetId = Nothing, _bgvrValueRanges = Nothing}
-
-
--- | The ID of the spreadsheet the data was retrieved from.
-bgvrSpreadsheetId :: Lens' BatchGetValuesResponse (Maybe Text)
-bgvrSpreadsheetId
-  = lens _bgvrSpreadsheetId
-      (\ s a -> s{_bgvrSpreadsheetId = a})
-
--- | The requested values. The order of the ValueRanges is the same as the
--- order of the requested ranges.
-bgvrValueRanges :: Lens' BatchGetValuesResponse [ValueRange]
-bgvrValueRanges
-  = lens _bgvrValueRanges
-      (\ s a -> s{_bgvrValueRanges = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON BatchGetValuesResponse where
-        parseJSON
-          = withObject "BatchGetValuesResponse"
-              (\ o ->
-                 BatchGetValuesResponse' <$>
-                   (o .:? "spreadsheetId") <*>
-                     (o .:? "valueRanges" .!= mempty))
-
-instance ToJSON BatchGetValuesResponse where
-        toJSON BatchGetValuesResponse'{..}
-          = object
-              (catMaybes
-                 [("spreadsheetId" .=) <$> _bgvrSpreadsheetId,
-                  ("valueRanges" .=) <$> _bgvrValueRanges])
-
--- | Removes the banded range with the given ID from the spreadsheet.
---
--- /See:/ 'deleteBandingRequest' smart constructor.
-newtype DeleteBandingRequest =
-  DeleteBandingRequest'
-    { _dbrBandedRangeId :: Maybe (Textual Int32)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteBandingRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dbrBandedRangeId'
-deleteBandingRequest
-    :: DeleteBandingRequest
-deleteBandingRequest = DeleteBandingRequest' {_dbrBandedRangeId = Nothing}
-
-
--- | The ID of the banded range to delete.
-dbrBandedRangeId :: Lens' DeleteBandingRequest (Maybe Int32)
-dbrBandedRangeId
-  = lens _dbrBandedRangeId
-      (\ s a -> s{_dbrBandedRangeId = a})
-      . mapping _Coerce
-
-instance FromJSON DeleteBandingRequest where
-        parseJSON
-          = withObject "DeleteBandingRequest"
-              (\ o ->
-                 DeleteBandingRequest' <$> (o .:? "bandedRangeId"))
-
-instance ToJSON DeleteBandingRequest where
-        toJSON DeleteBandingRequest'{..}
-          = object
-              (catMaybes
-                 [("bandedRangeId" .=) <$> _dbrBandedRangeId])
-
--- | The response from deleting developer metadata.
---
--- /See:/ 'deleteDeveloperMetadataResponse' smart constructor.
-newtype DeleteDeveloperMetadataResponse =
-  DeleteDeveloperMetadataResponse'
-    { _ddmrDeletedDeveloperMetadata :: Maybe [DeveloperMetadata]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteDeveloperMetadataResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddmrDeletedDeveloperMetadata'
-deleteDeveloperMetadataResponse
-    :: DeleteDeveloperMetadataResponse
-deleteDeveloperMetadataResponse =
-  DeleteDeveloperMetadataResponse' {_ddmrDeletedDeveloperMetadata = Nothing}
-
-
--- | The metadata that was deleted.
-ddmrDeletedDeveloperMetadata :: Lens' DeleteDeveloperMetadataResponse [DeveloperMetadata]
-ddmrDeletedDeveloperMetadata
-  = lens _ddmrDeletedDeveloperMetadata
-      (\ s a -> s{_ddmrDeletedDeveloperMetadata = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON DeleteDeveloperMetadataResponse
-         where
-        parseJSON
-          = withObject "DeleteDeveloperMetadataResponse"
-              (\ o ->
-                 DeleteDeveloperMetadataResponse' <$>
-                   (o .:? "deletedDeveloperMetadata" .!= mempty))
-
-instance ToJSON DeleteDeveloperMetadataResponse where
-        toJSON DeleteDeveloperMetadataResponse'{..}
-          = object
-              (catMaybes
-                 [("deletedDeveloperMetadata" .=) <$>
-                    _ddmrDeletedDeveloperMetadata])
-
--- | The response from updating developer metadata.
---
--- /See:/ 'updateDeveloperMetadataResponse' smart constructor.
-newtype UpdateDeveloperMetadataResponse =
-  UpdateDeveloperMetadataResponse'
-    { _uDeveloperMetadata :: Maybe [DeveloperMetadata]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateDeveloperMetadataResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uDeveloperMetadata'
-updateDeveloperMetadataResponse
-    :: UpdateDeveloperMetadataResponse
-updateDeveloperMetadataResponse =
-  UpdateDeveloperMetadataResponse' {_uDeveloperMetadata = Nothing}
-
-
--- | The updated developer metadata.
-uDeveloperMetadata :: Lens' UpdateDeveloperMetadataResponse [DeveloperMetadata]
-uDeveloperMetadata
-  = lens _uDeveloperMetadata
-      (\ s a -> s{_uDeveloperMetadata = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON UpdateDeveloperMetadataResponse
-         where
-        parseJSON
-          = withObject "UpdateDeveloperMetadataResponse"
-              (\ o ->
-                 UpdateDeveloperMetadataResponse' <$>
-                   (o .:? "developerMetadata" .!= mempty))
-
-instance ToJSON UpdateDeveloperMetadataResponse where
-        toJSON UpdateDeveloperMetadataResponse'{..}
-          = object
-              (catMaybes
-                 [("developerMetadata" .=) <$> _uDeveloperMetadata])
-
--- | A single kind of update to apply to a spreadsheet.
---
--- /See:/ 'request'' smart constructor.
-data Request' =
-  Request''
-    { _reqAddFilterView                :: !(Maybe AddFilterViewRequest)
-    , _reqDeleteProtectedRange         :: !(Maybe DeleteProtectedRangeRequest)
-    , _reqUpdateProtectedRange         :: !(Maybe UpdateProtectedRangeRequest)
-    , _reqUpdateCells                  :: !(Maybe UpdateCellsRequest)
-    , _reqCreateDeveloperMetadata      :: !(Maybe CreateDeveloperMetadataRequest)
-    , _reqDuplicateFilterView          :: !(Maybe DuplicateFilterViewRequest)
-    , _reqAddConditionalFormatRule     :: !(Maybe AddConditionalFormatRuleRequest)
-    , _reqRandomizeRange               :: !(Maybe RandomizeRangeRequest)
-    , _reqSortRange                    :: !(Maybe SortRangeRequest)
-    , _reqUpdateNamedRange             :: !(Maybe UpdateNamedRangeRequest)
-    , _reqDeleteNamedRange             :: !(Maybe DeleteNamedRangeRequest)
-    , _reqInsertRange                  :: !(Maybe InsertRangeRequest)
-    , _reqDeleteBanding                :: !(Maybe DeleteBandingRequest)
-    , _reqUpdateBanding                :: !(Maybe UpdateBandingRequest)
-    , _reqClearBasicFilter             :: !(Maybe ClearBasicFilterRequest)
-    , _reqAppendCells                  :: !(Maybe AppendCellsRequest)
-    , _reqPasteData                    :: !(Maybe PasteDataRequest)
-    , _reqUpdateEmbeddedObjectPosition :: !(Maybe UpdateEmbeddedObjectPositionRequest)
-    , _reqDeleteRange                  :: !(Maybe DeleteRangeRequest)
-    , _reqCopyPaste                    :: !(Maybe CopyPasteRequest)
-    , _reqUpdateDimensionGroup         :: !(Maybe UpdateDimensionGroupRequest)
-    , _reqDeleteDimensionGroup         :: !(Maybe DeleteDimensionGroupRequest)
-    , _reqAutoResizeDimensions         :: !(Maybe AutoResizeDimensionsRequest)
-    , _reqAddSheet                     :: !(Maybe AddSheetRequest)
-    , _reqFindReplace                  :: !(Maybe FindReplaceRequest)
-    , _reqDeleteDimension              :: !(Maybe DeleteDimensionRequest)
-    , _reqCutPaste                     :: !(Maybe CutPasteRequest)
-    , _reqMoveDimension                :: !(Maybe MoveDimensionRequest)
-    , _reqRepeatCell                   :: !(Maybe RepeatCellRequest)
-    , _reqAddProtectedRange            :: !(Maybe AddProtectedRangeRequest)
-    , _reqUpdateFilterView             :: !(Maybe UpdateFilterViewRequest)
-    , _reqDeleteFilterView             :: !(Maybe DeleteFilterViewRequest)
-    , _reqInsertDimension              :: !(Maybe InsertDimensionRequest)
-    , _reqUpdateSheetProperties        :: !(Maybe UpdateSheetPropertiesRequest)
-    , _reqDeleteConditionalFormatRule  :: !(Maybe DeleteConditionalFormatRuleRequest)
-    , _reqUpdateConditionalFormatRule  :: !(Maybe UpdateConditionalFormatRuleRequest)
-    , _reqDeleteEmbeddedObject         :: !(Maybe DeleteEmbeddedObjectRequest)
-    , _reqDeleteDeveloperMetadata      :: !(Maybe DeleteDeveloperMetadataRequest)
-    , _reqUpdateDeveloperMetadata      :: !(Maybe UpdateDeveloperMetadataRequest)
-    , _reqMergeCells                   :: !(Maybe MergeCellsRequest)
-    , _reqAddNamedRange                :: !(Maybe AddNamedRangeRequest)
-    , _reqAddChart                     :: !(Maybe AddChartRequest)
-    , _reqAddBanding                   :: !(Maybe AddBandingRequest)
-    , _reqDuplicateSheet               :: !(Maybe DuplicateSheetRequest)
-    , _reqAutoFill                     :: !(Maybe AutoFillRequest)
-    , _reqUpdateDimensionProperties    :: !(Maybe UpdateDimensionPropertiesRequest)
-    , _reqUpdateChartSpec              :: !(Maybe UpdateChartSpecRequest)
-    , _reqSetBasicFilter               :: !(Maybe SetBasicFilterRequest)
-    , _reqTextToColumns                :: !(Maybe TextToColumnsRequest)
-    , _reqAddDimensionGroup            :: !(Maybe AddDimensionGroupRequest)
-    , _reqUpdateSpreadsheetProperties  :: !(Maybe UpdateSpreadsheetPropertiesRequest)
-    , _reqDeleteSheet                  :: !(Maybe DeleteSheetRequest)
-    , _reqUnmergeCells                 :: !(Maybe UnmergeCellsRequest)
-    , _reqUpdateBOrders                :: !(Maybe UpdateBOrdersRequest)
-    , _reqAppendDimension              :: !(Maybe AppendDimensionRequest)
-    , _reqSetDataValidation            :: !(Maybe SetDataValidationRequest)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Request' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'reqAddFilterView'
---
--- * 'reqDeleteProtectedRange'
---
--- * 'reqUpdateProtectedRange'
---
--- * 'reqUpdateCells'
---
--- * 'reqCreateDeveloperMetadata'
---
--- * 'reqDuplicateFilterView'
---
--- * 'reqAddConditionalFormatRule'
---
--- * 'reqRandomizeRange'
---
--- * 'reqSortRange'
---
--- * 'reqUpdateNamedRange'
---
--- * 'reqDeleteNamedRange'
---
--- * 'reqInsertRange'
---
--- * 'reqDeleteBanding'
---
--- * 'reqUpdateBanding'
---
--- * 'reqClearBasicFilter'
---
--- * 'reqAppendCells'
---
--- * 'reqPasteData'
---
--- * 'reqUpdateEmbeddedObjectPosition'
---
--- * 'reqDeleteRange'
---
--- * 'reqCopyPaste'
---
--- * 'reqUpdateDimensionGroup'
---
--- * 'reqDeleteDimensionGroup'
---
--- * 'reqAutoResizeDimensions'
---
--- * 'reqAddSheet'
---
--- * 'reqFindReplace'
---
--- * 'reqDeleteDimension'
---
--- * 'reqCutPaste'
---
--- * 'reqMoveDimension'
---
--- * 'reqRepeatCell'
---
--- * 'reqAddProtectedRange'
---
--- * 'reqUpdateFilterView'
---
--- * 'reqDeleteFilterView'
---
--- * 'reqInsertDimension'
---
--- * 'reqUpdateSheetProperties'
---
--- * 'reqDeleteConditionalFormatRule'
---
--- * 'reqUpdateConditionalFormatRule'
---
--- * 'reqDeleteEmbeddedObject'
---
--- * 'reqDeleteDeveloperMetadata'
---
--- * 'reqUpdateDeveloperMetadata'
---
--- * 'reqMergeCells'
---
--- * 'reqAddNamedRange'
---
--- * 'reqAddChart'
---
--- * 'reqAddBanding'
---
--- * 'reqDuplicateSheet'
---
--- * 'reqAutoFill'
---
--- * 'reqUpdateDimensionProperties'
---
--- * 'reqUpdateChartSpec'
---
--- * 'reqSetBasicFilter'
---
--- * 'reqTextToColumns'
---
--- * 'reqAddDimensionGroup'
---
--- * 'reqUpdateSpreadsheetProperties'
---
--- * 'reqDeleteSheet'
---
--- * 'reqUnmergeCells'
---
--- * 'reqUpdateBOrders'
---
--- * 'reqAppendDimension'
---
--- * 'reqSetDataValidation'
-request'
-    :: Request'
-request' =
-  Request''
-    { _reqAddFilterView = Nothing
-    , _reqDeleteProtectedRange = Nothing
-    , _reqUpdateProtectedRange = Nothing
-    , _reqUpdateCells = Nothing
-    , _reqCreateDeveloperMetadata = Nothing
-    , _reqDuplicateFilterView = Nothing
-    , _reqAddConditionalFormatRule = Nothing
-    , _reqRandomizeRange = Nothing
-    , _reqSortRange = Nothing
-    , _reqUpdateNamedRange = Nothing
-    , _reqDeleteNamedRange = Nothing
-    , _reqInsertRange = Nothing
-    , _reqDeleteBanding = Nothing
-    , _reqUpdateBanding = Nothing
-    , _reqClearBasicFilter = Nothing
-    , _reqAppendCells = Nothing
-    , _reqPasteData = Nothing
-    , _reqUpdateEmbeddedObjectPosition = Nothing
-    , _reqDeleteRange = Nothing
-    , _reqCopyPaste = Nothing
-    , _reqUpdateDimensionGroup = Nothing
-    , _reqDeleteDimensionGroup = Nothing
-    , _reqAutoResizeDimensions = Nothing
-    , _reqAddSheet = Nothing
-    , _reqFindReplace = Nothing
-    , _reqDeleteDimension = Nothing
-    , _reqCutPaste = Nothing
-    , _reqMoveDimension = Nothing
-    , _reqRepeatCell = Nothing
-    , _reqAddProtectedRange = Nothing
-    , _reqUpdateFilterView = Nothing
-    , _reqDeleteFilterView = Nothing
-    , _reqInsertDimension = Nothing
-    , _reqUpdateSheetProperties = Nothing
-    , _reqDeleteConditionalFormatRule = Nothing
-    , _reqUpdateConditionalFormatRule = Nothing
-    , _reqDeleteEmbeddedObject = Nothing
-    , _reqDeleteDeveloperMetadata = Nothing
-    , _reqUpdateDeveloperMetadata = Nothing
-    , _reqMergeCells = Nothing
-    , _reqAddNamedRange = Nothing
-    , _reqAddChart = Nothing
-    , _reqAddBanding = Nothing
-    , _reqDuplicateSheet = Nothing
-    , _reqAutoFill = Nothing
-    , _reqUpdateDimensionProperties = Nothing
-    , _reqUpdateChartSpec = Nothing
-    , _reqSetBasicFilter = Nothing
-    , _reqTextToColumns = Nothing
-    , _reqAddDimensionGroup = Nothing
-    , _reqUpdateSpreadsheetProperties = Nothing
-    , _reqDeleteSheet = Nothing
-    , _reqUnmergeCells = Nothing
-    , _reqUpdateBOrders = Nothing
-    , _reqAppendDimension = Nothing
-    , _reqSetDataValidation = Nothing
-    }
-
-
--- | Adds a filter view.
-reqAddFilterView :: Lens' Request' (Maybe AddFilterViewRequest)
-reqAddFilterView
-  = lens _reqAddFilterView
-      (\ s a -> s{_reqAddFilterView = a})
-
--- | Deletes a protected range.
-reqDeleteProtectedRange :: Lens' Request' (Maybe DeleteProtectedRangeRequest)
-reqDeleteProtectedRange
-  = lens _reqDeleteProtectedRange
-      (\ s a -> s{_reqDeleteProtectedRange = a})
-
--- | Updates a protected range.
-reqUpdateProtectedRange :: Lens' Request' (Maybe UpdateProtectedRangeRequest)
-reqUpdateProtectedRange
-  = lens _reqUpdateProtectedRange
-      (\ s a -> s{_reqUpdateProtectedRange = a})
-
--- | Updates many cells at once.
-reqUpdateCells :: Lens' Request' (Maybe UpdateCellsRequest)
-reqUpdateCells
-  = lens _reqUpdateCells
-      (\ s a -> s{_reqUpdateCells = a})
-
--- | Creates new developer metadata
-reqCreateDeveloperMetadata :: Lens' Request' (Maybe CreateDeveloperMetadataRequest)
-reqCreateDeveloperMetadata
-  = lens _reqCreateDeveloperMetadata
-      (\ s a -> s{_reqCreateDeveloperMetadata = a})
-
--- | Duplicates a filter view.
-reqDuplicateFilterView :: Lens' Request' (Maybe DuplicateFilterViewRequest)
-reqDuplicateFilterView
-  = lens _reqDuplicateFilterView
-      (\ s a -> s{_reqDuplicateFilterView = a})
-
--- | Adds a new conditional format rule.
-reqAddConditionalFormatRule :: Lens' Request' (Maybe AddConditionalFormatRuleRequest)
-reqAddConditionalFormatRule
-  = lens _reqAddConditionalFormatRule
-      (\ s a -> s{_reqAddConditionalFormatRule = a})
-
--- | Randomizes the order of the rows in a range.
-reqRandomizeRange :: Lens' Request' (Maybe RandomizeRangeRequest)
-reqRandomizeRange
-  = lens _reqRandomizeRange
-      (\ s a -> s{_reqRandomizeRange = a})
-
--- | Sorts data in a range.
-reqSortRange :: Lens' Request' (Maybe SortRangeRequest)
-reqSortRange
-  = lens _reqSortRange (\ s a -> s{_reqSortRange = a})
-
--- | Updates a named range.
-reqUpdateNamedRange :: Lens' Request' (Maybe UpdateNamedRangeRequest)
-reqUpdateNamedRange
-  = lens _reqUpdateNamedRange
-      (\ s a -> s{_reqUpdateNamedRange = a})
-
--- | Deletes a named range.
-reqDeleteNamedRange :: Lens' Request' (Maybe DeleteNamedRangeRequest)
-reqDeleteNamedRange
-  = lens _reqDeleteNamedRange
-      (\ s a -> s{_reqDeleteNamedRange = a})
-
--- | Inserts new cells in a sheet, shifting the existing cells.
-reqInsertRange :: Lens' Request' (Maybe InsertRangeRequest)
-reqInsertRange
-  = lens _reqInsertRange
-      (\ s a -> s{_reqInsertRange = a})
-
--- | Removes a banded range
-reqDeleteBanding :: Lens' Request' (Maybe DeleteBandingRequest)
-reqDeleteBanding
-  = lens _reqDeleteBanding
-      (\ s a -> s{_reqDeleteBanding = a})
-
--- | Updates a banded range
-reqUpdateBanding :: Lens' Request' (Maybe UpdateBandingRequest)
-reqUpdateBanding
-  = lens _reqUpdateBanding
-      (\ s a -> s{_reqUpdateBanding = a})
-
--- | Clears the basic filter on a sheet.
-reqClearBasicFilter :: Lens' Request' (Maybe ClearBasicFilterRequest)
-reqClearBasicFilter
-  = lens _reqClearBasicFilter
-      (\ s a -> s{_reqClearBasicFilter = a})
-
--- | Appends cells after the last row with data in a sheet.
-reqAppendCells :: Lens' Request' (Maybe AppendCellsRequest)
-reqAppendCells
-  = lens _reqAppendCells
-      (\ s a -> s{_reqAppendCells = a})
-
--- | Pastes data (HTML or delimited) into a sheet.
-reqPasteData :: Lens' Request' (Maybe PasteDataRequest)
-reqPasteData
-  = lens _reqPasteData (\ s a -> s{_reqPasteData = a})
-
--- | Updates an embedded object\'s (e.g. chart, image) position.
-reqUpdateEmbeddedObjectPosition :: Lens' Request' (Maybe UpdateEmbeddedObjectPositionRequest)
-reqUpdateEmbeddedObjectPosition
-  = lens _reqUpdateEmbeddedObjectPosition
-      (\ s a -> s{_reqUpdateEmbeddedObjectPosition = a})
-
--- | Deletes a range of cells from a sheet, shifting the remaining cells.
-reqDeleteRange :: Lens' Request' (Maybe DeleteRangeRequest)
-reqDeleteRange
-  = lens _reqDeleteRange
-      (\ s a -> s{_reqDeleteRange = a})
-
--- | Copies data from one area and pastes it to another.
-reqCopyPaste :: Lens' Request' (Maybe CopyPasteRequest)
-reqCopyPaste
-  = lens _reqCopyPaste (\ s a -> s{_reqCopyPaste = a})
-
--- | Updates the state of the specified group.
-reqUpdateDimensionGroup :: Lens' Request' (Maybe UpdateDimensionGroupRequest)
-reqUpdateDimensionGroup
-  = lens _reqUpdateDimensionGroup
-      (\ s a -> s{_reqUpdateDimensionGroup = a})
-
--- | Deletes a group over the specified range.
-reqDeleteDimensionGroup :: Lens' Request' (Maybe DeleteDimensionGroupRequest)
-reqDeleteDimensionGroup
-  = lens _reqDeleteDimensionGroup
-      (\ s a -> s{_reqDeleteDimensionGroup = a})
-
--- | Automatically resizes one or more dimensions based on the contents of
--- the cells in that dimension.
-reqAutoResizeDimensions :: Lens' Request' (Maybe AutoResizeDimensionsRequest)
-reqAutoResizeDimensions
-  = lens _reqAutoResizeDimensions
-      (\ s a -> s{_reqAutoResizeDimensions = a})
-
--- | Adds a sheet.
-reqAddSheet :: Lens' Request' (Maybe AddSheetRequest)
-reqAddSheet
-  = lens _reqAddSheet (\ s a -> s{_reqAddSheet = a})
-
--- | Finds and replaces occurrences of some text with other text.
-reqFindReplace :: Lens' Request' (Maybe FindReplaceRequest)
-reqFindReplace
-  = lens _reqFindReplace
-      (\ s a -> s{_reqFindReplace = a})
-
--- | Deletes rows or columns in a sheet.
-reqDeleteDimension :: Lens' Request' (Maybe DeleteDimensionRequest)
-reqDeleteDimension
-  = lens _reqDeleteDimension
-      (\ s a -> s{_reqDeleteDimension = a})
-
--- | Cuts data from one area and pastes it to another.
-reqCutPaste :: Lens' Request' (Maybe CutPasteRequest)
-reqCutPaste
-  = lens _reqCutPaste (\ s a -> s{_reqCutPaste = a})
-
--- | Moves rows or columns to another location in a sheet.
-reqMoveDimension :: Lens' Request' (Maybe MoveDimensionRequest)
-reqMoveDimension
-  = lens _reqMoveDimension
-      (\ s a -> s{_reqMoveDimension = a})
-
--- | Repeats a single cell across a range.
-reqRepeatCell :: Lens' Request' (Maybe RepeatCellRequest)
-reqRepeatCell
-  = lens _reqRepeatCell
-      (\ s a -> s{_reqRepeatCell = a})
-
--- | Adds a protected range.
-reqAddProtectedRange :: Lens' Request' (Maybe AddProtectedRangeRequest)
-reqAddProtectedRange
-  = lens _reqAddProtectedRange
-      (\ s a -> s{_reqAddProtectedRange = a})
-
--- | Updates the properties of a filter view.
-reqUpdateFilterView :: Lens' Request' (Maybe UpdateFilterViewRequest)
-reqUpdateFilterView
-  = lens _reqUpdateFilterView
-      (\ s a -> s{_reqUpdateFilterView = a})
-
--- | Deletes a filter view from a sheet.
-reqDeleteFilterView :: Lens' Request' (Maybe DeleteFilterViewRequest)
-reqDeleteFilterView
-  = lens _reqDeleteFilterView
-      (\ s a -> s{_reqDeleteFilterView = a})
-
--- | Inserts new rows or columns in a sheet.
-reqInsertDimension :: Lens' Request' (Maybe InsertDimensionRequest)
-reqInsertDimension
-  = lens _reqInsertDimension
-      (\ s a -> s{_reqInsertDimension = a})
-
--- | Updates a sheet\'s properties.
-reqUpdateSheetProperties :: Lens' Request' (Maybe UpdateSheetPropertiesRequest)
-reqUpdateSheetProperties
-  = lens _reqUpdateSheetProperties
-      (\ s a -> s{_reqUpdateSheetProperties = a})
-
--- | Deletes an existing conditional format rule.
-reqDeleteConditionalFormatRule :: Lens' Request' (Maybe DeleteConditionalFormatRuleRequest)
-reqDeleteConditionalFormatRule
-  = lens _reqDeleteConditionalFormatRule
-      (\ s a -> s{_reqDeleteConditionalFormatRule = a})
-
--- | Updates an existing conditional format rule.
-reqUpdateConditionalFormatRule :: Lens' Request' (Maybe UpdateConditionalFormatRuleRequest)
-reqUpdateConditionalFormatRule
-  = lens _reqUpdateConditionalFormatRule
-      (\ s a -> s{_reqUpdateConditionalFormatRule = a})
-
--- | Deletes an embedded object (e.g, chart, image) in a sheet.
-reqDeleteEmbeddedObject :: Lens' Request' (Maybe DeleteEmbeddedObjectRequest)
-reqDeleteEmbeddedObject
-  = lens _reqDeleteEmbeddedObject
-      (\ s a -> s{_reqDeleteEmbeddedObject = a})
-
--- | Deletes developer metadata
-reqDeleteDeveloperMetadata :: Lens' Request' (Maybe DeleteDeveloperMetadataRequest)
-reqDeleteDeveloperMetadata
-  = lens _reqDeleteDeveloperMetadata
-      (\ s a -> s{_reqDeleteDeveloperMetadata = a})
-
--- | Updates an existing developer metadata entry
-reqUpdateDeveloperMetadata :: Lens' Request' (Maybe UpdateDeveloperMetadataRequest)
-reqUpdateDeveloperMetadata
-  = lens _reqUpdateDeveloperMetadata
-      (\ s a -> s{_reqUpdateDeveloperMetadata = a})
-
--- | Merges cells together.
-reqMergeCells :: Lens' Request' (Maybe MergeCellsRequest)
-reqMergeCells
-  = lens _reqMergeCells
-      (\ s a -> s{_reqMergeCells = a})
-
--- | Adds a named range.
-reqAddNamedRange :: Lens' Request' (Maybe AddNamedRangeRequest)
-reqAddNamedRange
-  = lens _reqAddNamedRange
-      (\ s a -> s{_reqAddNamedRange = a})
-
--- | Adds a chart.
-reqAddChart :: Lens' Request' (Maybe AddChartRequest)
-reqAddChart
-  = lens _reqAddChart (\ s a -> s{_reqAddChart = a})
-
--- | Adds a new banded range
-reqAddBanding :: Lens' Request' (Maybe AddBandingRequest)
-reqAddBanding
-  = lens _reqAddBanding
-      (\ s a -> s{_reqAddBanding = a})
-
--- | Duplicates a sheet.
-reqDuplicateSheet :: Lens' Request' (Maybe DuplicateSheetRequest)
-reqDuplicateSheet
-  = lens _reqDuplicateSheet
-      (\ s a -> s{_reqDuplicateSheet = a})
-
--- | Automatically fills in more data based on existing data.
-reqAutoFill :: Lens' Request' (Maybe AutoFillRequest)
-reqAutoFill
-  = lens _reqAutoFill (\ s a -> s{_reqAutoFill = a})
-
--- | Updates dimensions\' properties.
-reqUpdateDimensionProperties :: Lens' Request' (Maybe UpdateDimensionPropertiesRequest)
-reqUpdateDimensionProperties
-  = lens _reqUpdateDimensionProperties
-      (\ s a -> s{_reqUpdateDimensionProperties = a})
-
--- | Updates a chart\'s specifications.
-reqUpdateChartSpec :: Lens' Request' (Maybe UpdateChartSpecRequest)
-reqUpdateChartSpec
-  = lens _reqUpdateChartSpec
-      (\ s a -> s{_reqUpdateChartSpec = a})
-
--- | Sets the basic filter on a sheet.
-reqSetBasicFilter :: Lens' Request' (Maybe SetBasicFilterRequest)
-reqSetBasicFilter
-  = lens _reqSetBasicFilter
-      (\ s a -> s{_reqSetBasicFilter = a})
-
--- | Converts a column of text into many columns of text.
-reqTextToColumns :: Lens' Request' (Maybe TextToColumnsRequest)
-reqTextToColumns
-  = lens _reqTextToColumns
-      (\ s a -> s{_reqTextToColumns = a})
-
--- | Creates a group over the specified range.
-reqAddDimensionGroup :: Lens' Request' (Maybe AddDimensionGroupRequest)
-reqAddDimensionGroup
-  = lens _reqAddDimensionGroup
-      (\ s a -> s{_reqAddDimensionGroup = a})
-
--- | Updates the spreadsheet\'s properties.
-reqUpdateSpreadsheetProperties :: Lens' Request' (Maybe UpdateSpreadsheetPropertiesRequest)
-reqUpdateSpreadsheetProperties
-  = lens _reqUpdateSpreadsheetProperties
-      (\ s a -> s{_reqUpdateSpreadsheetProperties = a})
-
--- | Deletes a sheet.
-reqDeleteSheet :: Lens' Request' (Maybe DeleteSheetRequest)
-reqDeleteSheet
-  = lens _reqDeleteSheet
-      (\ s a -> s{_reqDeleteSheet = a})
-
--- | Unmerges merged cells.
-reqUnmergeCells :: Lens' Request' (Maybe UnmergeCellsRequest)
-reqUnmergeCells
-  = lens _reqUnmergeCells
-      (\ s a -> s{_reqUnmergeCells = a})
-
--- | Updates the borders in a range of cells.
-reqUpdateBOrders :: Lens' Request' (Maybe UpdateBOrdersRequest)
-reqUpdateBOrders
-  = lens _reqUpdateBOrders
-      (\ s a -> s{_reqUpdateBOrders = a})
-
--- | Appends dimensions to the end of a sheet.
-reqAppendDimension :: Lens' Request' (Maybe AppendDimensionRequest)
-reqAppendDimension
-  = lens _reqAppendDimension
-      (\ s a -> s{_reqAppendDimension = a})
-
--- | Sets data validation for one or more cells.
-reqSetDataValidation :: Lens' Request' (Maybe SetDataValidationRequest)
-reqSetDataValidation
-  = lens _reqSetDataValidation
-      (\ s a -> s{_reqSetDataValidation = a})
-
-instance FromJSON Request' where
-        parseJSON
-          = withObject "Request"
-              (\ o ->
-                 Request'' <$>
-                   (o .:? "addFilterView") <*>
-                     (o .:? "deleteProtectedRange")
-                     <*> (o .:? "updateProtectedRange")
-                     <*> (o .:? "updateCells")
-                     <*> (o .:? "createDeveloperMetadata")
-                     <*> (o .:? "duplicateFilterView")
-                     <*> (o .:? "addConditionalFormatRule")
-                     <*> (o .:? "randomizeRange")
-                     <*> (o .:? "sortRange")
-                     <*> (o .:? "updateNamedRange")
-                     <*> (o .:? "deleteNamedRange")
-                     <*> (o .:? "insertRange")
-                     <*> (o .:? "deleteBanding")
-                     <*> (o .:? "updateBanding")
-                     <*> (o .:? "clearBasicFilter")
-                     <*> (o .:? "appendCells")
-                     <*> (o .:? "pasteData")
-                     <*> (o .:? "updateEmbeddedObjectPosition")
-                     <*> (o .:? "deleteRange")
-                     <*> (o .:? "copyPaste")
-                     <*> (o .:? "updateDimensionGroup")
-                     <*> (o .:? "deleteDimensionGroup")
-                     <*> (o .:? "autoResizeDimensions")
-                     <*> (o .:? "addSheet")
-                     <*> (o .:? "findReplace")
-                     <*> (o .:? "deleteDimension")
-                     <*> (o .:? "cutPaste")
-                     <*> (o .:? "moveDimension")
-                     <*> (o .:? "repeatCell")
-                     <*> (o .:? "addProtectedRange")
-                     <*> (o .:? "updateFilterView")
-                     <*> (o .:? "deleteFilterView")
-                     <*> (o .:? "insertDimension")
-                     <*> (o .:? "updateSheetProperties")
-                     <*> (o .:? "deleteConditionalFormatRule")
-                     <*> (o .:? "updateConditionalFormatRule")
-                     <*> (o .:? "deleteEmbeddedObject")
-                     <*> (o .:? "deleteDeveloperMetadata")
-                     <*> (o .:? "updateDeveloperMetadata")
-                     <*> (o .:? "mergeCells")
-                     <*> (o .:? "addNamedRange")
-                     <*> (o .:? "addChart")
-                     <*> (o .:? "addBanding")
-                     <*> (o .:? "duplicateSheet")
-                     <*> (o .:? "autoFill")
-                     <*> (o .:? "updateDimensionProperties")
-                     <*> (o .:? "updateChartSpec")
-                     <*> (o .:? "setBasicFilter")
-                     <*> (o .:? "textToColumns")
-                     <*> (o .:? "addDimensionGroup")
-                     <*> (o .:? "updateSpreadsheetProperties")
-                     <*> (o .:? "deleteSheet")
-                     <*> (o .:? "unmergeCells")
-                     <*> (o .:? "updateBorders")
-                     <*> (o .:? "appendDimension")
-                     <*> (o .:? "setDataValidation"))
-
-instance ToJSON Request' where
-        toJSON Request''{..}
-          = object
-              (catMaybes
-                 [("addFilterView" .=) <$> _reqAddFilterView,
-                  ("deleteProtectedRange" .=) <$>
-                    _reqDeleteProtectedRange,
-                  ("updateProtectedRange" .=) <$>
-                    _reqUpdateProtectedRange,
-                  ("updateCells" .=) <$> _reqUpdateCells,
-                  ("createDeveloperMetadata" .=) <$>
-                    _reqCreateDeveloperMetadata,
-                  ("duplicateFilterView" .=) <$>
-                    _reqDuplicateFilterView,
-                  ("addConditionalFormatRule" .=) <$>
-                    _reqAddConditionalFormatRule,
-                  ("randomizeRange" .=) <$> _reqRandomizeRange,
-                  ("sortRange" .=) <$> _reqSortRange,
-                  ("updateNamedRange" .=) <$> _reqUpdateNamedRange,
-                  ("deleteNamedRange" .=) <$> _reqDeleteNamedRange,
-                  ("insertRange" .=) <$> _reqInsertRange,
-                  ("deleteBanding" .=) <$> _reqDeleteBanding,
-                  ("updateBanding" .=) <$> _reqUpdateBanding,
-                  ("clearBasicFilter" .=) <$> _reqClearBasicFilter,
-                  ("appendCells" .=) <$> _reqAppendCells,
-                  ("pasteData" .=) <$> _reqPasteData,
-                  ("updateEmbeddedObjectPosition" .=) <$>
-                    _reqUpdateEmbeddedObjectPosition,
-                  ("deleteRange" .=) <$> _reqDeleteRange,
-                  ("copyPaste" .=) <$> _reqCopyPaste,
-                  ("updateDimensionGroup" .=) <$>
-                    _reqUpdateDimensionGroup,
-                  ("deleteDimensionGroup" .=) <$>
-                    _reqDeleteDimensionGroup,
-                  ("autoResizeDimensions" .=) <$>
-                    _reqAutoResizeDimensions,
-                  ("addSheet" .=) <$> _reqAddSheet,
-                  ("findReplace" .=) <$> _reqFindReplace,
-                  ("deleteDimension" .=) <$> _reqDeleteDimension,
-                  ("cutPaste" .=) <$> _reqCutPaste,
-                  ("moveDimension" .=) <$> _reqMoveDimension,
-                  ("repeatCell" .=) <$> _reqRepeatCell,
-                  ("addProtectedRange" .=) <$> _reqAddProtectedRange,
-                  ("updateFilterView" .=) <$> _reqUpdateFilterView,
-                  ("deleteFilterView" .=) <$> _reqDeleteFilterView,
-                  ("insertDimension" .=) <$> _reqInsertDimension,
-                  ("updateSheetProperties" .=) <$>
-                    _reqUpdateSheetProperties,
-                  ("deleteConditionalFormatRule" .=) <$>
-                    _reqDeleteConditionalFormatRule,
-                  ("updateConditionalFormatRule" .=) <$>
-                    _reqUpdateConditionalFormatRule,
-                  ("deleteEmbeddedObject" .=) <$>
-                    _reqDeleteEmbeddedObject,
-                  ("deleteDeveloperMetadata" .=) <$>
-                    _reqDeleteDeveloperMetadata,
-                  ("updateDeveloperMetadata" .=) <$>
-                    _reqUpdateDeveloperMetadata,
-                  ("mergeCells" .=) <$> _reqMergeCells,
-                  ("addNamedRange" .=) <$> _reqAddNamedRange,
-                  ("addChart" .=) <$> _reqAddChart,
-                  ("addBanding" .=) <$> _reqAddBanding,
-                  ("duplicateSheet" .=) <$> _reqDuplicateSheet,
-                  ("autoFill" .=) <$> _reqAutoFill,
-                  ("updateDimensionProperties" .=) <$>
-                    _reqUpdateDimensionProperties,
-                  ("updateChartSpec" .=) <$> _reqUpdateChartSpec,
-                  ("setBasicFilter" .=) <$> _reqSetBasicFilter,
-                  ("textToColumns" .=) <$> _reqTextToColumns,
-                  ("addDimensionGroup" .=) <$> _reqAddDimensionGroup,
-                  ("updateSpreadsheetProperties" .=) <$>
-                    _reqUpdateSpreadsheetProperties,
-                  ("deleteSheet" .=) <$> _reqDeleteSheet,
-                  ("unmergeCells" .=) <$> _reqUnmergeCells,
-                  ("updateBorders" .=) <$> _reqUpdateBOrders,
-                  ("appendDimension" .=) <$> _reqAppendDimension,
-                  ("setDataValidation" .=) <$> _reqSetDataValidation])
-
--- | Properties that describe the style of a line.
---
--- /See:/ 'lineStyle' smart constructor.
-data LineStyle =
-  LineStyle'
-    { _lsWidth :: !(Maybe (Textual Int32))
-    , _lsType  :: !(Maybe LineStyleType)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'LineStyle' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lsWidth'
---
--- * 'lsType'
-lineStyle
-    :: LineStyle
-lineStyle = LineStyle' {_lsWidth = Nothing, _lsType = Nothing}
-
-
--- | The thickness of the line, in px.
-lsWidth :: Lens' LineStyle (Maybe Int32)
-lsWidth
-  = lens _lsWidth (\ s a -> s{_lsWidth = a}) .
-      mapping _Coerce
-
--- | The dash type of the line.
-lsType :: Lens' LineStyle (Maybe LineStyleType)
-lsType = lens _lsType (\ s a -> s{_lsType = a})
-
-instance FromJSON LineStyle where
-        parseJSON
-          = withObject "LineStyle"
-              (\ o ->
-                 LineStyle' <$> (o .:? "width") <*> (o .:? "type"))
-
-instance ToJSON LineStyle where
-        toJSON LineStyle'{..}
-          = object
-              (catMaybes
-                 [("width" .=) <$> _lsWidth, ("type" .=) <$> _lsType])
-
--- | The result of deleting a conditional format rule.
---
--- /See:/ 'deleteConditionalFormatRuleResponse' smart constructor.
-newtype DeleteConditionalFormatRuleResponse =
-  DeleteConditionalFormatRuleResponse'
-    { _dcfrrRule :: Maybe ConditionalFormatRule
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteConditionalFormatRuleResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcfrrRule'
-deleteConditionalFormatRuleResponse
-    :: DeleteConditionalFormatRuleResponse
-deleteConditionalFormatRuleResponse =
-  DeleteConditionalFormatRuleResponse' {_dcfrrRule = Nothing}
-
-
--- | The rule that was deleted.
-dcfrrRule :: Lens' DeleteConditionalFormatRuleResponse (Maybe ConditionalFormatRule)
-dcfrrRule
-  = lens _dcfrrRule (\ s a -> s{_dcfrrRule = a})
-
-instance FromJSON DeleteConditionalFormatRuleResponse
-         where
-        parseJSON
-          = withObject "DeleteConditionalFormatRuleResponse"
-              (\ o ->
-                 DeleteConditionalFormatRuleResponse' <$>
-                   (o .:? "rule"))
-
-instance ToJSON DeleteConditionalFormatRuleResponse
-         where
-        toJSON DeleteConditionalFormatRuleResponse'{..}
-          = object (catMaybes [("rule" .=) <$> _dcfrrRule])
-
--- | The result of updating a conditional format rule.
---
--- /See:/ 'updateConditionalFormatRuleResponse' smart constructor.
-data UpdateConditionalFormatRuleResponse =
-  UpdateConditionalFormatRuleResponse'
-    { _uNewRule  :: !(Maybe ConditionalFormatRule)
-    , _uNewIndex :: !(Maybe (Textual Int32))
-    , _uOldIndex :: !(Maybe (Textual Int32))
-    , _uOldRule  :: !(Maybe ConditionalFormatRule)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConditionalFormatRuleResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uNewRule'
---
--- * 'uNewIndex'
---
--- * 'uOldIndex'
---
--- * 'uOldRule'
-updateConditionalFormatRuleResponse
-    :: UpdateConditionalFormatRuleResponse
-updateConditionalFormatRuleResponse =
-  UpdateConditionalFormatRuleResponse'
-    { _uNewRule = Nothing
-    , _uNewIndex = Nothing
-    , _uOldIndex = Nothing
-    , _uOldRule = Nothing
-    }
-
-
--- | The new rule that replaced the old rule (if replacing), or the rule that
--- was moved (if moved)
-uNewRule :: Lens' UpdateConditionalFormatRuleResponse (Maybe ConditionalFormatRule)
-uNewRule = lens _uNewRule (\ s a -> s{_uNewRule = a})
-
--- | The index of the new rule.
-uNewIndex :: Lens' UpdateConditionalFormatRuleResponse (Maybe Int32)
-uNewIndex
-  = lens _uNewIndex (\ s a -> s{_uNewIndex = a}) .
-      mapping _Coerce
-
--- | The old index of the rule. Not set if a rule was replaced (because it is
--- the same as new_index).
-uOldIndex :: Lens' UpdateConditionalFormatRuleResponse (Maybe Int32)
-uOldIndex
-  = lens _uOldIndex (\ s a -> s{_uOldIndex = a}) .
-      mapping _Coerce
-
--- | The old (deleted) rule. Not set if a rule was moved (because it is the
--- same as new_rule).
-uOldRule :: Lens' UpdateConditionalFormatRuleResponse (Maybe ConditionalFormatRule)
-uOldRule = lens _uOldRule (\ s a -> s{_uOldRule = a})
-
-instance FromJSON UpdateConditionalFormatRuleResponse
-         where
-        parseJSON
-          = withObject "UpdateConditionalFormatRuleResponse"
-              (\ o ->
-                 UpdateConditionalFormatRuleResponse' <$>
-                   (o .:? "newRule") <*> (o .:? "newIndex") <*>
-                     (o .:? "oldIndex")
-                     <*> (o .:? "oldRule"))
-
-instance ToJSON UpdateConditionalFormatRuleResponse
-         where
-        toJSON UpdateConditionalFormatRuleResponse'{..}
-          = object
-              (catMaybes
-                 [("newRule" .=) <$> _uNewRule,
-                  ("newIndex" .=) <$> _uNewIndex,
-                  ("oldIndex" .=) <$> _uOldIndex,
-                  ("oldRule" .=) <$> _uOldRule])
diff --git a/gen/Network/Google/Sheets/Types/Sum.hs b/gen/Network/Google/Sheets/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/Google/Sheets/Types/Sum.hs
+++ /dev/null
@@ -1,3043 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.Sheets.Types.Sum
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.Sheets.Types.Sum where
-
-import           Network.Google.Prelude 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"
-
-instance ToJSON TextToColumnsRequestDelimiterType where
-    toJSON = toJSONText
-
--- | 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.
-data InsertRangeRequestShiftDimension
-    = IRRSDDimensionUnspecified
-      -- ^ @DIMENSION_UNSPECIFIED@
-      -- The default value, do not use.
-    | IRRSDRows
-      -- ^ @ROWS@
-      -- Operates on the rows of a sheet.
-    | IRRSDColumns
-      -- ^ @COLUMNS@
-      -- Operates on the columns of a sheet.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable InsertRangeRequestShiftDimension
-
-instance FromHttpApiData InsertRangeRequestShiftDimension where
-    parseQueryParam = \case
-        "DIMENSION_UNSPECIFIED" -> Right IRRSDDimensionUnspecified
-        "ROWS" -> Right IRRSDRows
-        "COLUMNS" -> Right IRRSDColumns
-        x -> Left ("Unable to parse InsertRangeRequestShiftDimension from: " <> x)
-
-instance ToHttpApiData InsertRangeRequestShiftDimension where
-    toQueryParam = \case
-        IRRSDDimensionUnspecified -> "DIMENSION_UNSPECIFIED"
-        IRRSDRows -> "ROWS"
-        IRRSDColumns -> "COLUMNS"
-
-instance FromJSON InsertRangeRequestShiftDimension where
-    parseJSON = parseJSONText "InsertRangeRequestShiftDimension"
-
-instance ToJSON InsertRangeRequestShiftDimension where
-    toJSON = toJSONText
diff --git a/gogol-sheets.cabal b/gogol-sheets.cabal
--- a/gogol-sheets.cabal
+++ b/gogol-sheets.cabal
@@ -1,62 +1,77 @@
-name:                  gogol-sheets
-version:               0.5.0
-synopsis:              Google Sheets SDK.
-homepage:              https://github.com/brendanhay/gogol
-bug-reports:           https://github.com/brendanhay/gogol/issues
-license:               OtherLicense
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2015-2016 Brendan Hay
-category:              Network, Google, Cloud
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md src/.gitkeep
+cabal-version:      2.2
+name:               gogol-sheets
+version:            1.0.0
+synopsis:           Google Sheets SDK.
+homepage:           https://github.com/brendanhay/gogol
+bug-reports:        https://github.com/brendanhay/gogol/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+gogol@gmail.com>, Toni Cebrián <toni@tonicebrian.com>
 
+copyright:          Copyright (c) 2015-2025 Brendan Hay
+category:           Google
+build-type:         Simple
+extra-source-files:
+  README.md
+  src/.gitkeep
+
 description:
-    Reads and writes Google Sheets.
-    .
-    /Warning:/ This is an experimental prototype/preview release which is still
-    under exploratory development and not intended for public use, caveat emptor!
-    .
-    This library is compatible with version @v4@
-    of the API.
+  Reads and writes Google Sheets.
+  .
+  /Warning:/ This is an experimental prototype/preview release which is still
+  under exploratory development and not intended for public use, caveat emptor!
+  .
+  This library is compatible with version @v4@
+  of the API.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/gogol.git
+  type:     git
+  location: git://github.com/brendanhay/gogol.git
+  subdir:   gogol-sheets
 
+flag field-selectors
+  description:
+    If record field selectors should be enabled. Disabling this requires GHC >=9.2 and the NoFieldSelectors extension.
+
+  default:     False
+  manual:      True
+
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
+  default-language: GHC2021
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
+    -fwarn-unused-packages
 
-    ghc-options:       -Wall
+  if (!flag(field-selectors) && impl(ghc >=9.2))
+    default-extensions: NoFieldSelectors
 
-    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
-        , Network.Google.Sheets
-        , Network.Google.Sheets.Types
+  exposed-modules:
+    Gogol.Sheets
+    Gogol.Sheets.Spreadsheets.BatchUpdate
+    Gogol.Sheets.Spreadsheets.Create
+    Gogol.Sheets.Spreadsheets.DeveloperMetadata.Get
+    Gogol.Sheets.Spreadsheets.DeveloperMetadata.Search
+    Gogol.Sheets.Spreadsheets.Get
+    Gogol.Sheets.Spreadsheets.GetByDataFilter
+    Gogol.Sheets.Spreadsheets.Sheets.CopyTo
+    Gogol.Sheets.Spreadsheets.Values.Append
+    Gogol.Sheets.Spreadsheets.Values.BatchClear
+    Gogol.Sheets.Spreadsheets.Values.BatchClearByDataFilter
+    Gogol.Sheets.Spreadsheets.Values.BatchGet
+    Gogol.Sheets.Spreadsheets.Values.BatchGetByDataFilter
+    Gogol.Sheets.Spreadsheets.Values.BatchUpdate
+    Gogol.Sheets.Spreadsheets.Values.BatchUpdateByDataFilter
+    Gogol.Sheets.Spreadsheets.Values.Clear
+    Gogol.Sheets.Spreadsheets.Values.Get
+    Gogol.Sheets.Spreadsheets.Values.Update
+    Gogol.Sheets.Types
 
-    other-modules:
-          Network.Google.Sheets.Types.Product
-        , Network.Google.Sheets.Types.Sum
+  other-modules:
+    Gogol.Sheets.Internal.Product
+    Gogol.Sheets.Internal.Sum
 
-    build-depends:
-          gogol-core == 0.5.0.*
-        , base       >= 4.7 && < 5
+  build-depends:    gogol-core ^>=1.0.0
