-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Sheets SDK.
--   
--   Reads and writes Google Sheets.
--   
--   <i>Warning:</i> 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 <tt>v4</tt> of the API.
@package gogol-sheets
@version 0.3.0


module Network.Google.Sheets.Types

-- | Default request referring to version <tt>v4</tt> of the Google Sheets
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
sheetsService :: ServiceConfig

-- | View your Google Spreadsheets
spreadsheetsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets.readonly"]

-- | View the files in your Google Drive
driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"]

-- | View and manage the files in your Google Drive
driveScope :: Proxy '["https://www.googleapis.com/auth/drive"]

-- | View and manage your spreadsheets in Google Drive
spreadsheetsScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets"]

-- | Information about which values in a pivot group should be used for
--   sorting.
--   
--   <i>See:</i> <a>pivotGroupSortValueBucket</a> smart constructor.
data PivotGroupSortValueBucket

-- | Creates a value of <a>PivotGroupSortValueBucket</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsvbBuckets</a></li>
--   <li><a>pgsvbValuesIndex</a></li>
--   </ul>
pivotGroupSortValueBucket :: PivotGroupSortValueBucket

-- | Determines the bucket from which values are chosen to sort. For
--   example, in a pivot table with one row group &amp; 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]

-- | The offset in the PivotTable.values list which the values in this
--   grouping should be sorted by.
pgsvbValuesIndex :: Lens' PivotGroupSortValueBucket (Maybe Int32)

-- | Data within a range of the spreadsheet.
--   
--   <i>See:</i> <a>valueRange</a> smart constructor.
data ValueRange

-- | Creates a value of <a>ValueRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vrValues</a></li>
--   <li><a>vrRange</a></li>
--   <li><a>vrMajorDimension</a></li>
--   </ul>
valueRange :: ValueRange

-- | 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]]

-- | 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)

-- | 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)

-- | Sorts data in rows based on a sort order per column.
--   
--   <i>See:</i> <a>sortRangeRequest</a> smart constructor.
data SortRangeRequest

-- | Creates a value of <a>SortRangeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srrSortSpecs</a></li>
--   <li><a>srrRange</a></li>
--   </ul>
sortRangeRequest :: SortRangeRequest

-- | The sort order per column. Later specifications are used when values
--   are equal in the earlier specifications.
srrSortSpecs :: Lens' SortRangeRequest [SortSpec]

-- | The range to sort.
srrRange :: Lens' SortRangeRequest (Maybe GridRange)

-- | What kind of data to paste.
data CopyPasteRequestPasteType

-- | <tt>PASTE_NORMAL</tt> Paste values, formulas, formats, and merges.
PasteNormal :: CopyPasteRequestPasteType

-- | <tt>PASTE_VALUES</tt> Paste the values ONLY without formats, formulas,
--   or merges.
PasteValues :: CopyPasteRequestPasteType

-- | <tt>PASTE_FORMAT</tt> Paste the format and data validation only.
PasteFormat :: CopyPasteRequestPasteType

-- | <tt>PASTE_NO_BORDERS</tt> Like PASTE_NORMAL but without borders.
PasteNoBOrders :: CopyPasteRequestPasteType

-- | <tt>PASTE_FORMULA</tt> Paste the formulas only.
PasteFormula :: CopyPasteRequestPasteType

-- | <tt>PASTE_DATA_VALIDATION</tt> Paste the data validation only.
PasteDataValidation :: CopyPasteRequestPasteType

-- | <tt>PASTE_CONDITIONAL_FORMATTING</tt> Paste the conditional formatting
--   rules only.
PasteConditionalFormatting :: CopyPasteRequestPasteType

-- | Removes the named range with the given ID from the spreadsheet.
--   
--   <i>See:</i> <a>deleteNamedRangeRequest</a> smart constructor.
data DeleteNamedRangeRequest

-- | Creates a value of <a>DeleteNamedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dnrrNamedRangeId</a></li>
--   </ul>
deleteNamedRangeRequest :: DeleteNamedRangeRequest

-- | The ID of the named range to delete.
dnrrNamedRangeId :: Lens' DeleteNamedRangeRequest (Maybe Text)

-- | Updates properties of the named range with the specified namedRangeId.
--   
--   <i>See:</i> <a>updateNamedRangeRequest</a> smart constructor.
data UpdateNamedRangeRequest

-- | Creates a value of <a>UpdateNamedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>unrrNamedRange</a></li>
--   <li><a>unrrFields</a></li>
--   </ul>
updateNamedRangeRequest :: UpdateNamedRangeRequest

-- | The named range to update with the new properties.
unrrNamedRange :: Lens' UpdateNamedRangeRequest (Maybe NamedRange)

-- | The fields that should be updated. At least one field must be
--   specified. The root `namedRange` is implied and should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
unrrFields :: Lens' UpdateNamedRangeRequest (Maybe FieldMask)

-- | The position of this axis.
data BasicChartAxisPosition

-- | <tt>BASIC_CHART_AXIS_POSITION_UNSPECIFIED</tt> Default value, do not
--   use.
BasicChartAxisPositionUnspecified :: BasicChartAxisPosition

-- | <tt>BOTTOM_AXIS</tt> 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.
BottomAxis :: BasicChartAxisPosition

-- | <tt>LEFT_AXIS</tt> 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.
LeftAxis :: BasicChartAxisPosition

-- | <tt>RIGHT_AXIS</tt> 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.
RightAxis :: BasicChartAxisPosition

-- | The data included in a domain or series.
--   
--   <i>See:</i> <a>chartData</a> smart constructor.
data ChartData

-- | Creates a value of <a>ChartData</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdSourceRange</a></li>
--   </ul>
chartData :: ChartData

-- | The source ranges of the data.
cdSourceRange :: Lens' ChartData (Maybe ChartSourceRange)

-- | The request for clearing more than one range of values in a
--   spreadsheet.
--   
--   <i>See:</i> <a>batchClearValuesRequest</a> smart constructor.
data BatchClearValuesRequest

-- | Creates a value of <a>BatchClearValuesRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcvrRanges</a></li>
--   </ul>
batchClearValuesRequest :: BatchClearValuesRequest

-- | The ranges to clear, in A1 notation.
bcvrRanges :: Lens' BatchClearValuesRequest [Text]

-- | 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

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
DimensionUnspecified :: DeleteRangeRequestShiftDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
Rows :: DeleteRangeRequestShiftDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
Columns :: DeleteRangeRequestShiftDimension

-- | 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

-- | <tt>BASIC_CHART_AXIS_POSITION_UNSPECIFIED</tt> Default value, do not
--   use.
BCSTABasicChartAxisPositionUnspecified :: BasicChartSeriesTargetAxis

-- | <tt>BOTTOM_AXIS</tt> 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.
BCSTABottomAxis :: BasicChartSeriesTargetAxis

-- | <tt>LEFT_AXIS</tt> 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.
BCSTALeftAxis :: BasicChartSeriesTargetAxis

-- | <tt>RIGHT_AXIS</tt> 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.
BCSTARightAxis :: BasicChartSeriesTargetAxis

-- | Properties of a spreadsheet.
--   
--   <i>See:</i> <a>spreadsheetProperties</a> smart constructor.
data SpreadsheetProperties

-- | Creates a value of <a>SpreadsheetProperties</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spDefaultFormat</a></li>
--   <li><a>spLocale</a></li>
--   <li><a>spAutoRecalc</a></li>
--   <li><a>spTitle</a></li>
--   <li><a>spTimeZone</a></li>
--   </ul>
spreadsheetProperties :: SpreadsheetProperties

-- | 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)

-- | 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)

-- | The amount of time to wait before volatile functions are recalculated.
spAutoRecalc :: Lens' SpreadsheetProperties (Maybe SpreadsheetPropertiesAutoRecalc)

-- | The title of the spreadsheet.
spTitle :: Lens' SpreadsheetProperties (Maybe Text)

-- | 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)

-- | The borders of the cell.
--   
--   <i>See:</i> <a>bOrders</a> smart constructor.
data BOrders

-- | Creates a value of <a>BOrders</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>boBottom</a></li>
--   <li><a>boLeft</a></li>
--   <li><a>boRight</a></li>
--   <li><a>boTop</a></li>
--   </ul>
bOrders :: BOrders

-- | The bottom border of the cell.
boBottom :: Lens' BOrders (Maybe BOrder)

-- | The left border of the cell.
boLeft :: Lens' BOrders (Maybe BOrder)

-- | The right border of the cell.
boRight :: Lens' BOrders (Maybe BOrder)

-- | The top border of the cell.
boTop :: Lens' BOrders (Maybe BOrder)

-- | 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.
--   
--   <i>See:</i> <a>textFormatRun</a> smart constructor.
data TextFormatRun

-- | Creates a value of <a>TextFormatRun</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tfrFormat</a></li>
--   <li><a>tfrStartIndex</a></li>
--   </ul>
textFormatRun :: TextFormatRun

-- | The format of this run. Absent values inherit the cell's format.
tfrFormat :: Lens' TextFormatRun (Maybe TextFormat)

-- | The character index where this run starts.
tfrStartIndex :: Lens' TextFormatRun (Maybe Int32)

-- | 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.
--   
--   <i>See:</i> <a>addSheetRequest</a> smart constructor.
data AddSheetRequest

-- | Creates a value of <a>AddSheetRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asrProperties</a></li>
--   </ul>
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.)
asrProperties :: Lens' AddSheetRequest (Maybe SheetProperties)

-- | A sort order associated with a specific column or row.
--   
--   <i>See:</i> <a>sortSpec</a> smart constructor.
data SortSpec

-- | Creates a value of <a>SortSpec</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssSortOrder</a></li>
--   <li><a>ssDimensionIndex</a></li>
--   </ul>
sortSpec :: SortSpec

-- | The order data should be sorted.
ssSortOrder :: Lens' SortSpec (Maybe SortSpecSortOrder)

-- | The dimension the sort should be applied to.
ssDimensionIndex :: Lens' SortSpec (Maybe Int32)

-- | 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

-- | <tt>SERIAL_NUMBER</tt> Instructs date, time, datetime, and duration
--   fields to be output as doubles in "serial number" format, as
--   popularized by Lotus 1-2-3. Days are counted from December 31st 1899
--   and are incremented by 1, and times are fractions of a day. For
--   example, January 1st 1900 at noon would be 1.5, 1 because it's 1 day
--   offset from December 31st 1899, and .5 because noon is half a day.
--   February 1st 1900 at 3pm would be 32.625. This correctly treats the
--   year 1900 as not a leap year.
SerialNumber :: BatchUpdateValuesRequestResponseDateTimeRenderOption

-- | <tt>FORMATTED_STRING</tt> Instructs date, time, datetime, and duration
--   fields to be output as strings in their given number format (which is
--   dependent on the spreadsheet locale).
FormattedString :: BatchUpdateValuesRequestResponseDateTimeRenderOption

-- | Copies data from the source to the destination.
--   
--   <i>See:</i> <a>copyPasteRequest</a> smart constructor.
data CopyPasteRequest

-- | Creates a value of <a>CopyPasteRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cprDestination</a></li>
--   <li><a>cprSource</a></li>
--   <li><a>cprPasteOrientation</a></li>
--   <li><a>cprPasteType</a></li>
--   </ul>
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).
cprDestination :: Lens' CopyPasteRequest (Maybe GridRange)

-- | The source range to copy.
cprSource :: Lens' CopyPasteRequest (Maybe GridRange)

-- | How that data should be oriented when pasting.
cprPasteOrientation :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteOrientation)

-- | What kind of data to paste.
cprPasteType :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteType)

-- | 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!`.
--   
--   <i>See:</i> <a>gridRange</a> smart constructor.
data GridRange

-- | Creates a value of <a>GridRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grEndColumnIndex</a></li>
--   <li><a>grStartColumnIndex</a></li>
--   <li><a>grEndRowIndex</a></li>
--   <li><a>grStartRowIndex</a></li>
--   <li><a>grSheetId</a></li>
--   </ul>
gridRange :: GridRange

-- | The end column (exclusive) of the range, or not set if unbounded.
grEndColumnIndex :: Lens' GridRange (Maybe Int32)

-- | The start column (inclusive) of the range, or not set if unbounded.
grStartColumnIndex :: Lens' GridRange (Maybe Int32)

-- | The end row (exclusive) of the range, or not set if unbounded.
grEndRowIndex :: Lens' GridRange (Maybe Int32)

-- | The start row (inclusive) of the range, or not set if unbounded.
grStartRowIndex :: Lens' GridRange (Maybe Int32)

-- | The sheet this range is on.
grSheetId :: Lens' GridRange (Maybe Int32)

-- | Whether rows or columns should be appended.
data AppendDimensionRequestDimension

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
ADRDDimensionUnspecified :: AppendDimensionRequestDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
ADRDRows :: AppendDimensionRequestDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
ADRDColumns :: AppendDimensionRequestDimension

-- | The result of adding a filter view.
--   
--   <i>See:</i> <a>addFilterViewResponse</a> smart constructor.
data AddFilterViewResponse

-- | Creates a value of <a>AddFilterViewResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>afvrFilter</a></li>
--   </ul>
addFilterViewResponse :: AddFilterViewResponse

-- | The newly added filter view.
afvrFilter :: Lens' AddFilterViewResponse (Maybe FilterView)

-- | The dimension of the span.
data DimensionRangeDimension

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
DRDDimensionUnspecified :: DimensionRangeDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
DRDRows :: DimensionRangeDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
DRDColumns :: DimensionRangeDimension

-- | A condition that can evaluate to true or false. BooleanConditions are
--   used by conditional formatting, data validation, and the criteria in
--   filters.
--   
--   <i>See:</i> <a>booleanCondition</a> smart constructor.
data BooleanCondition

-- | Creates a value of <a>BooleanCondition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcValues</a></li>
--   <li><a>bcType</a></li>
--   </ul>
booleanCondition :: BooleanCondition

-- | 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]

-- | The type of condition.
bcType :: Lens' BooleanCondition (Maybe BooleanConditionType)

-- | Automatically resizes one or more dimensions based on the contents of
--   the cells in that dimension.
--   
--   <i>See:</i> <a>autoResizeDimensionsRequest</a> smart constructor.
data AutoResizeDimensionsRequest

-- | Creates a value of <a>AutoResizeDimensionsRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ardrDimensions</a></li>
--   </ul>
autoResizeDimensionsRequest :: AutoResizeDimensionsRequest

-- | The dimensions to automatically resize. Only COLUMNS are supported.
ardrDimensions :: Lens' AutoResizeDimensionsRequest (Maybe DimensionRange)

-- | Deletes a range of cells, shifting other cells into the deleted area.
--   
--   <i>See:</i> <a>deleteRangeRequest</a> smart constructor.
data DeleteRangeRequest

-- | Creates a value of <a>DeleteRangeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drrShiftDimension</a></li>
--   <li><a>drrRange</a></li>
--   </ul>
deleteRangeRequest :: DeleteRangeRequest

-- | 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)

-- | The range of cells to delete.
drrRange :: Lens' DeleteRangeRequest (Maybe GridRange)

-- | A sheet in a spreadsheet.
--   
--   <i>See:</i> <a>sheet</a> smart constructor.
data Sheet

-- | Creates a value of <a>Sheet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sData</a></li>
--   <li><a>sMerges</a></li>
--   <li><a>sProtectedRanges</a></li>
--   <li><a>sBandedRanges</a></li>
--   <li><a>sCharts</a></li>
--   <li><a>sBasicFilter</a></li>
--   <li><a>sConditionalFormats</a></li>
--   <li><a>sFilterViews</a></li>
--   <li><a>sProperties</a></li>
--   </ul>
sheet :: Sheet

-- | 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]

-- | The ranges that are merged together.
sMerges :: Lens' Sheet [GridRange]

-- | The protected ranges in this sheet.
sProtectedRanges :: Lens' Sheet [ProtectedRange]

-- | The banded (i.e. alternating colors) ranges on this sheet.
sBandedRanges :: Lens' Sheet [BandedRange]

-- | The specifications of every chart on this sheet.
sCharts :: Lens' Sheet [EmbeddedChart]

-- | The filter on this sheet, if any.
sBasicFilter :: Lens' Sheet (Maybe BasicFilter)

-- | The conditional format rules in this sheet.
sConditionalFormats :: Lens' Sheet [ConditionalFormatRule]

-- | The filter views in this sheet.
sFilterViews :: Lens' Sheet [FilterView]

-- | The properties of the sheet.
sProperties :: Lens' Sheet (Maybe SheetProperties)

-- | A coordinate in a sheet. All indexes are zero-based.
--   
--   <i>See:</i> <a>gridCoordinate</a> smart constructor.
data GridCoordinate

-- | Creates a value of <a>GridCoordinate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gcColumnIndex</a></li>
--   <li><a>gcRowIndex</a></li>
--   <li><a>gcSheetId</a></li>
--   </ul>
gridCoordinate :: GridCoordinate

-- | The column index of the coordinate.
gcColumnIndex :: Lens' GridCoordinate (Maybe Int32)

-- | The row index of the coordinate.
gcRowIndex :: Lens' GridCoordinate (Maybe Int32)

-- | The sheet this coordinate is on.
gcSheetId :: Lens' GridCoordinate (Maybe Int32)

-- | The response when clearing a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>clearValuesResponse</a> smart constructor.
data ClearValuesResponse

-- | Creates a value of <a>ClearValuesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cvrClearedRange</a></li>
--   <li><a>cvrSpreadsheetId</a></li>
--   </ul>
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.)
cvrClearedRange :: Lens' ClearValuesResponse (Maybe Text)

-- | The spreadsheet the updates were applied to.
cvrSpreadsheetId :: Lens' ClearValuesResponse (Maybe Text)

-- | Clears the basic filter, if any exists on the sheet.
--   
--   <i>See:</i> <a>clearBasicFilterRequest</a> smart constructor.
data ClearBasicFilterRequest

-- | Creates a value of <a>ClearBasicFilterRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbfrSheetId</a></li>
--   </ul>
clearBasicFilterRequest :: ClearBasicFilterRequest

-- | The sheet ID on which the basic filter should be cleared.
cbfrSheetId :: Lens' ClearBasicFilterRequest (Maybe Int32)

-- | Update an embedded object's position (such as a moving or resizing a
--   chart or image).
--   
--   <i>See:</i> <a>updateEmbeddedObjectPositionRequest</a> smart
--   constructor.
data UpdateEmbeddedObjectPositionRequest

-- | Creates a value of <a>UpdateEmbeddedObjectPositionRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ueoprNewPosition</a></li>
--   <li><a>ueoprObjectId</a></li>
--   <li><a>ueoprFields</a></li>
--   </ul>
updateEmbeddedObjectPositionRequest :: UpdateEmbeddedObjectPositionRequest

-- | 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)

-- | The ID of the object to moved.
ueoprObjectId :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe Int32)

-- | The fields of OverlayPosition that should be updated when setting a
--   new position. Used only if newPosition.overlayPosition is set, in
--   which case at least one field must be specified. The root
--   `newPosition.overlayPosition` is implied and should not be specified.
--   A single `"*"` can be used as short-hand for listing every field.
ueoprFields :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe FieldMask)

-- | The dimension that data should be filled into.
data SourceAndDestinationDimension

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
SADDDimensionUnspecified :: SourceAndDestinationDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
SADDRows :: SourceAndDestinationDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
SADDColumns :: SourceAndDestinationDimension

-- | A rule that may or may not match, depending on the condition.
--   
--   <i>See:</i> <a>booleanRule</a> smart constructor.
data BooleanRule

-- | Creates a value of <a>BooleanRule</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>brFormat</a></li>
--   <li><a>brCondition</a></li>
--   </ul>
booleanRule :: BooleanRule

-- | The format to apply. Conditional formatting can only apply a subset of
--   formatting: bold, italic, strikethrough, foreground color &amp;
--   background color.
brFormat :: Lens' BooleanRule (Maybe CellFormat)

-- | The condition of the rule. If the condition evaluates to true, the
--   format will be applied.
brCondition :: Lens' BooleanRule (Maybe BooleanCondition)

-- | The wrap strategy for the value in the cell.
data CellFormatWrapStrategy

-- | <tt>WRAP_STRATEGY_UNSPECIFIED</tt> The default value, do not use.
WrapStrategyUnspecified :: CellFormatWrapStrategy

-- | <tt>OVERFLOW_CELL</tt> 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. &lt;- Text continues into next cell | Next newline. |
OverflowCell :: CellFormatWrapStrategy

-- | <tt>LEGACY_WRAP</tt> 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| &lt;- Word is clipped. | word. |
LegacyWrap :: CellFormatWrapStrategy

-- | <tt>CLIP</tt> 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| &lt;- Text is clipped | Next newline. |
Clip :: CellFormatWrapStrategy

-- | <tt>WRAP</tt> Words that are longer than a line are wrapped at the
--   character level rather than clipped. Example: | Cell has a | |
--   loooooooooo| &lt;- Word is broken. | ong word. |
Wrap :: CellFormatWrapStrategy

-- | A combination of a source range and how to extend that source.
--   
--   <i>See:</i> <a>sourceAndDestination</a> smart constructor.
data SourceAndDestination

-- | Creates a value of <a>SourceAndDestination</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sadDimension</a></li>
--   <li><a>sadSource</a></li>
--   <li><a>sadFillLength</a></li>
--   </ul>
sourceAndDestination :: SourceAndDestination

-- | The dimension that data should be filled into.
sadDimension :: Lens' SourceAndDestination (Maybe SourceAndDestinationDimension)

-- | The location of the data to use as the source of the autofill.
sadSource :: Lens' SourceAndDestination (Maybe GridRange)

-- | 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)

-- | Inserts data into the spreadsheet starting at the specified
--   coordinate.
--   
--   <i>See:</i> <a>pasteDataRequest</a> smart constructor.
data PasteDataRequest

-- | Creates a value of <a>PasteDataRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pdrData</a></li>
--   <li><a>pdrCoordinate</a></li>
--   <li><a>pdrHTML</a></li>
--   <li><a>pdrType</a></li>
--   <li><a>pdrDelimiter</a></li>
--   </ul>
pasteDataRequest :: PasteDataRequest

-- | The data to insert.
pdrData :: Lens' PasteDataRequest (Maybe Text)

-- | The coordinate at which the data should start being inserted.
pdrCoordinate :: Lens' PasteDataRequest (Maybe GridCoordinate)

-- | True if the data is HTML.
pdrHTML :: Lens' PasteDataRequest (Maybe Bool)

-- | How the data should be pasted.
pdrType :: Lens' PasteDataRequest (Maybe PasteDataRequestType)

-- | The delimiter in the data.
pdrDelimiter :: Lens' PasteDataRequest (Maybe Text)

-- | How the input data should be interpreted.
data BatchUpdateValuesRequestValueInputOption

-- | <tt>INPUT_VALUE_OPTION_UNSPECIFIED</tt> Default input value. This
--   value must not be used.
InputValueOptionUnspecified :: BatchUpdateValuesRequestValueInputOption

-- | <tt>RAW</tt> The values the user has entered will not be parsed and
--   will be stored as-is.
Raw :: BatchUpdateValuesRequestValueInputOption

-- | <tt>USER_ENTERED</tt> 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.
UserEntered :: BatchUpdateValuesRequestValueInputOption

-- | Adds new cells after the last row with data in a sheet, inserting new
--   rows into the sheet if necessary.
--   
--   <i>See:</i> <a>appendCellsRequest</a> smart constructor.
data AppendCellsRequest

-- | Creates a value of <a>AppendCellsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acrRows</a></li>
--   <li><a>acrSheetId</a></li>
--   <li><a>acrFields</a></li>
--   </ul>
appendCellsRequest :: AppendCellsRequest

-- | The data to append.
acrRows :: Lens' AppendCellsRequest [RowData]

-- | The sheet ID to append the data to.
acrSheetId :: Lens' AppendCellsRequest (Maybe Int32)

-- | The fields of CellData that should be updated. At least one field must
--   be specified. The root is the CellData; 'row.values.' should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
acrFields :: Lens' AppendCellsRequest (Maybe FieldMask)

-- | The result of the find/replace.
--   
--   <i>See:</i> <a>findReplaceResponse</a> smart constructor.
data FindReplaceResponse

-- | Creates a value of <a>FindReplaceResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frrValuesChanged</a></li>
--   <li><a>frrFormulasChanged</a></li>
--   <li><a>frrRowsChanged</a></li>
--   <li><a>frrSheetsChanged</a></li>
--   <li><a>frrOccurrencesChanged</a></li>
--   </ul>
findReplaceResponse :: FindReplaceResponse

-- | The number of non-formula cells changed.
frrValuesChanged :: Lens' FindReplaceResponse (Maybe Int32)

-- | The number of formula cells changed.
frrFormulasChanged :: Lens' FindReplaceResponse (Maybe Int32)

-- | The number of rows changed.
frrRowsChanged :: Lens' FindReplaceResponse (Maybe Int32)

-- | The number of sheets changed.
frrSheetsChanged :: Lens' FindReplaceResponse (Maybe 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"` -&gt; `"Googlo Shoots"`.
frrOccurrencesChanged :: Lens' FindReplaceResponse (Maybe Int32)

-- | A <a>pie chart</a>.
--   
--   <i>See:</i> <a>pieChartSpec</a> smart constructor.
data PieChartSpec

-- | Creates a value of <a>PieChartSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcsPieHole</a></li>
--   <li><a>pcsLegendPosition</a></li>
--   <li><a>pcsDomain</a></li>
--   <li><a>pcsSeries</a></li>
--   <li><a>pcsThreeDimensional</a></li>
--   </ul>
pieChartSpec :: PieChartSpec

-- | The size of the hole in the pie chart.
pcsPieHole :: Lens' PieChartSpec (Maybe Double)

-- | Where the legend of the pie chart should be drawn.
pcsLegendPosition :: Lens' PieChartSpec (Maybe PieChartSpecLegendPosition)

-- | The data that covers the domain of the pie chart.
pcsDomain :: Lens' PieChartSpec (Maybe ChartData)

-- | The data that covers the one and only series of the pie chart.
pcsSeries :: Lens' PieChartSpec (Maybe ChartData)

-- | True if the pie is three dimensional.
pcsThreeDimensional :: Lens' PieChartSpec (Maybe Bool)

-- | The response when updating a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>appendValuesResponse</a> smart constructor.
data AppendValuesResponse

-- | Creates a value of <a>AppendValuesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>avrSpreadsheetId</a></li>
--   <li><a>avrUpdates</a></li>
--   <li><a>avrTableRange</a></li>
--   </ul>
appendValuesResponse :: AppendValuesResponse

-- | The spreadsheet the updates were applied to.
avrSpreadsheetId :: Lens' AppendValuesResponse (Maybe Text)

-- | Information about the updates that were applied.
avrUpdates :: Lens' AppendValuesResponse (Maybe UpdateValuesResponse)

-- | 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)

-- | Determines how values in the response should be rendered. The default
--   render option is ValueRenderOption.FORMATTED_VALUE.
data BatchUpdateValuesRequestResponseValueRenderOption

-- | <tt>FORMATTED_VALUE</tt> Values will be calculated &amp; 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"`.
FormattedValue :: BatchUpdateValuesRequestResponseValueRenderOption

-- | <tt>UNFORMATTED_VALUE</tt> 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`.
UnformattedValue :: BatchUpdateValuesRequestResponseValueRenderOption

-- | <tt>FORMULA</tt> 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"`.
Formula :: BatchUpdateValuesRequestResponseValueRenderOption

-- | A data validation rule.
--   
--   <i>See:</i> <a>dataValidationRule</a> smart constructor.
data DataValidationRule

-- | Creates a value of <a>DataValidationRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dvrShowCustomUi</a></li>
--   <li><a>dvrInputMessage</a></li>
--   <li><a>dvrStrict</a></li>
--   <li><a>dvrCondition</a></li>
--   </ul>
dataValidationRule :: DataValidationRule

-- | 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)

-- | A message to show the user when adding data to the cell.
dvrInputMessage :: Lens' DataValidationRule (Maybe Text)

-- | True if invalid data should be rejected.
dvrStrict :: Lens' DataValidationRule (Maybe Bool)

-- | The condition that data in the cell must match.
dvrCondition :: Lens' DataValidationRule (Maybe BooleanCondition)

-- | A filter view.
--   
--   <i>See:</i> <a>filterView</a> smart constructor.
data FilterView

-- | Creates a value of <a>FilterView</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fvSortSpecs</a></li>
--   <li><a>fvNamedRangeId</a></li>
--   <li><a>fvRange</a></li>
--   <li><a>fvFilterViewId</a></li>
--   <li><a>fvTitle</a></li>
--   <li><a>fvCriteria</a></li>
--   </ul>
filterView :: FilterView

-- | The sort order per column. Later specifications are used when values
--   are equal in the earlier specifications.
fvSortSpecs :: Lens' FilterView [SortSpec]

-- | 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)

-- | The range this filter view covers. When writing, only one of range or
--   named_range_id may be set.
fvRange :: Lens' FilterView (Maybe GridRange)

-- | The ID of the filter view.
fvFilterViewId :: Lens' FilterView (Maybe Int32)

-- | The name of the filter view.
fvTitle :: Lens' FilterView (Maybe Text)

-- | 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)

-- | Represents a color in the RGBA color space. This representation is
--   designed for simplicity of conversion to/from color representations in
--   various languages over compactness; for example, the fields of this
--   representation can be trivially provided to the constructor of
--   "java.awt.Color" in Java; it can also be trivially provided to
--   UIColor's "+colorWithRed:green:blue:alpha" method in iOS; and, with
--   just a little work, it can be easily formatted into a CSS "rgba()"
--   string in JavaScript, as well. Here are some examples: Example (Java):
--   import com.google.type.Color; // ... public static java.awt.Color
--   fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ?
--   protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color(
--   protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(),
--   alpha); } public static Color toProto(java.awt.Color color) { float
--   red = (float) color.getRed(); float green = (float) color.getGreen();
--   float blue = (float) color.getBlue(); float denominator = 255.0;
--   Color.Builder resultBuilder = Color .newBuilder() .setRed(red /
--   denominator) .setGreen(green / denominator) .setBlue(blue /
--   denominator); int alpha = color.getAlpha(); if (alpha != 255) {
--   result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) /
--   denominator) .build()); } return resultBuilder.build(); } // ...
--   Example (iOS / Obj-C): // ... static UIColor* fromProto(Color*
--   protocolor) { float red = [protocolor red]; float green = [protocolor
--   green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper =
--   [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) {
--   alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red
--   green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor*
--   color) { CGFloat red, green, blue, alpha; if (![color getRed:&amp;red
--   green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; }
--   Color* result = [Color alloc] init]; [result setRed:red]; [result
--   setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 &lt;&lt; 16) | (green &lt;&lt;
--   8) | blue); var hexString = rgbNumber.toString(16); var missingZeros =
--   6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i
--   &lt; missingZeros; i++) { resultBuilder.push('0'); }
--   resultBuilder.push(hexString); return resultBuilder.join(''); }; //
--   ...
--   
--   <i>See:</i> <a>color</a> smart constructor.
data Color

-- | Creates a value of <a>Color</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cRed</a></li>
--   <li><a>cAlpha</a></li>
--   <li><a>cGreen</a></li>
--   <li><a>cBlue</a></li>
--   </ul>
color :: Color

-- | The amount of red in the color as a value in the interval [0, 1].
cRed :: Lens' Color (Maybe Double)

-- | 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)

-- | The amount of green in the color as a value in the interval [0, 1].
cGreen :: Lens' Color (Maybe Double)

-- | The amount of blue in the color as a value in the interval [0, 1].
cBlue :: Lens' Color (Maybe Double)

-- | Deletes a particular filter view.
--   
--   <i>See:</i> <a>deleteFilterViewRequest</a> smart constructor.
data DeleteFilterViewRequest

-- | Creates a value of <a>DeleteFilterViewRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfvrFilterId</a></li>
--   </ul>
deleteFilterViewRequest :: DeleteFilterViewRequest

-- | The ID of the filter to delete.
dfvrFilterId :: Lens' DeleteFilterViewRequest (Maybe Int32)

-- | Updates properties of the filter view.
--   
--   <i>See:</i> <a>updateFilterViewRequest</a> smart constructor.
data UpdateFilterViewRequest

-- | Creates a value of <a>UpdateFilterViewRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ufvrFilter</a></li>
--   <li><a>ufvrFields</a></li>
--   </ul>
updateFilterViewRequest :: UpdateFilterViewRequest

-- | The new properties of the filter view.
ufvrFilter :: Lens' UpdateFilterViewRequest (Maybe FilterView)

-- | The fields that should be updated. At least one field must be
--   specified. The root `filter` is implied and should not be specified. A
--   single `"*"` can be used as short-hand for listing every field.
ufvrFields :: Lens' UpdateFilterViewRequest (Maybe FieldMask)

-- | 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".
--   
--   <i>See:</i> <a>basicChartSeries</a> smart constructor.
data BasicChartSeries

-- | Creates a value of <a>BasicChartSeries</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcsTargetAxis</a></li>
--   <li><a>bcsSeries</a></li>
--   <li><a>bcsType</a></li>
--   </ul>
basicChartSeries :: BasicChartSeries

-- | The minor axis that will specify the range of values for this series.
--   For example, if charting stocks over time, the "Volume" series may
--   want to be pinned to the right with the prices pinned to the left,
--   because the scale of trading volume is different than the scale of
--   prices. It is an error to specify an axis that isn't a valid minor
--   axis for the chart's type.
bcsTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)

-- | The data being visualized in this chart series.
bcsSeries :: Lens' BasicChartSeries (Maybe ChartData)

-- | The type of this series. Valid only if the chartType is COMBO.
--   Different types will change the way the series is visualized. Only
--   LINE, AREA, and COLUMN are supported.
bcsType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)

-- | Adds a new protected range.
--   
--   <i>See:</i> <a>addProtectedRangeRequest</a> smart constructor.
data AddProtectedRangeRequest

-- | Creates a value of <a>AddProtectedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aprrProtectedRange</a></li>
--   </ul>
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.)
aprrProtectedRange :: Lens' AddProtectedRangeRequest (Maybe ProtectedRange)

-- | Where the legend of the pie chart should be drawn.
data PieChartSpecLegendPosition

-- | <tt>PIE_CHART_LEGEND_POSITION_UNSPECIFIED</tt> Default value, do not
--   use.
PieChartLegendPositionUnspecified :: PieChartSpecLegendPosition

-- | <tt>BOTTOM_LEGEND</tt> The legend is rendered on the bottom of the
--   chart.
BottomLegend :: PieChartSpecLegendPosition

-- | <tt>LEFT_LEGEND</tt> The legend is rendered on the left of the chart.
LeftLegend :: PieChartSpecLegendPosition

-- | <tt>RIGHT_LEGEND</tt> The legend is rendered on the right of the
--   chart.
RightLegend :: PieChartSpecLegendPosition

-- | <tt>TOP_LEGEND</tt> The legend is rendered on the top of the chart.
TopLegend :: PieChartSpecLegendPosition

-- | <tt>NO_LEGEND</tt> No legend is rendered.
NoLegend :: PieChartSpecLegendPosition

-- | <tt>LABELED_LEGEND</tt> Each pie slice has a label attached to it.
LabeledLegend :: PieChartSpecLegendPosition

-- | 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.
--   
--   <i>See:</i> <a>repeatCellRequest</a> smart constructor.
data RepeatCellRequest

-- | Creates a value of <a>RepeatCellRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcrCell</a></li>
--   <li><a>rcrRange</a></li>
--   <li><a>rcrFields</a></li>
--   </ul>
repeatCellRequest :: RepeatCellRequest

-- | The data to write.
rcrCell :: Lens' RepeatCellRequest (Maybe CellData)

-- | The range to repeat the cell in.
rcrRange :: Lens' RepeatCellRequest (Maybe GridRange)

-- | The fields that should be updated. At least one field must be
--   specified. The root `cell` is implied and should not be specified. A
--   single `"*"` can be used as short-hand for listing every field.
rcrFields :: Lens' RepeatCellRequest (Maybe FieldMask)

-- | The value of the condition.
--   
--   <i>See:</i> <a>conditionValue</a> smart constructor.
data ConditionValue

-- | Creates a value of <a>ConditionValue</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cvRelativeDate</a></li>
--   <li><a>cvUserEnteredValue</a></li>
--   </ul>
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.
cvRelativeDate :: Lens' ConditionValue (Maybe ConditionValueRelativeDate)

-- | A value the condition is based on. The value will be parsed as if the
--   user typed into a cell. Formulas are supported (and must begin with an
--   `=`).
cvUserEnteredValue :: Lens' ConditionValue (Maybe Text)

-- | Deletes the dimensions from the sheet.
--   
--   <i>See:</i> <a>deleteDimensionRequest</a> smart constructor.
data DeleteDimensionRequest

-- | Creates a value of <a>DeleteDimensionRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ddrRange</a></li>
--   </ul>
deleteDimensionRequest :: DeleteDimensionRequest

-- | The dimensions to delete from the sheet.
ddrRange :: Lens' DeleteDimensionRequest (Maybe DimensionRange)

-- | The request for clearing a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>clearValuesRequest</a> smart constructor.
data ClearValuesRequest

-- | Creates a value of <a>ClearValuesRequest</a> with the minimum fields
--   required to make a request.
clearValuesRequest :: ClearValuesRequest

-- | Finds and replaces data in cells over a range, sheet, or all sheets.
--   
--   <i>See:</i> <a>findReplaceRequest</a> smart constructor.
data FindReplaceRequest

-- | Creates a value of <a>FindReplaceRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frrMatchCase</a></li>
--   <li><a>frrAllSheets</a></li>
--   <li><a>frrIncludeFormulas</a></li>
--   <li><a>frrMatchEntireCell</a></li>
--   <li><a>frrRange</a></li>
--   <li><a>frrSheetId</a></li>
--   <li><a>frrFind</a></li>
--   <li><a>frrSearchByRegex</a></li>
--   <li><a>frrReplacement</a></li>
--   </ul>
findReplaceRequest :: FindReplaceRequest

-- | True if the search is case sensitive.
frrMatchCase :: Lens' FindReplaceRequest (Maybe Bool)

-- | True to find/replace over all sheets.
frrAllSheets :: Lens' FindReplaceRequest (Maybe Bool)

-- | True if the search should include cells with formulas. False to skip
--   cells with formulas.
frrIncludeFormulas :: Lens' FindReplaceRequest (Maybe Bool)

-- | True if the find value should match the entire cell.
frrMatchEntireCell :: Lens' FindReplaceRequest (Maybe Bool)

-- | The range to find/replace over.
frrRange :: Lens' FindReplaceRequest (Maybe GridRange)

-- | The sheet to find/replace over.
frrSheetId :: Lens' FindReplaceRequest (Maybe Int32)

-- | The value to search.
frrFind :: Lens' FindReplaceRequest (Maybe 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.
frrSearchByRegex :: Lens' FindReplaceRequest (Maybe Bool)

-- | The value to use as the replacement.
frrReplacement :: Lens' FindReplaceRequest (Maybe Text)

-- | Moves one or more rows or columns.
--   
--   <i>See:</i> <a>moveDimensionRequest</a> smart constructor.
data MoveDimensionRequest

-- | Creates a value of <a>MoveDimensionRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdrDestinationIndex</a></li>
--   <li><a>mdrSource</a></li>
--   </ul>
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`.
mdrDestinationIndex :: Lens' MoveDimensionRequest (Maybe Int32)

-- | The source dimensions to move.
mdrSource :: Lens' MoveDimensionRequest (Maybe DimensionRange)

-- | The vertical alignment of the value in the cell.
data CellFormatVerticalAlignment

-- | <tt>VERTICAL_ALIGN_UNSPECIFIED</tt> The vertical alignment is not
--   specified. Do not use this.
VerticalAlignUnspecified :: CellFormatVerticalAlignment

-- | <tt>TOP</tt> The text is explicitly aligned to the top of the cell.
Top :: CellFormatVerticalAlignment

-- | <tt>MIDDLE</tt> The text is explicitly aligned to the middle of the
--   cell.
Middle :: CellFormatVerticalAlignment

-- | <tt>BOTTOM</tt> The text is explicitly aligned to the bottom of the
--   cell.
Bottom :: CellFormatVerticalAlignment

-- | The type of the number format. When writing, this field must be set.
data NumberFormatType

-- | <tt>NUMBER_FORMAT_TYPE_UNSPECIFIED</tt> The number format is not
--   specified and is based on the contents of the cell. Do not explicitly
--   use this.
NumberFormatTypeUnspecified :: NumberFormatType

-- | <tt>TEXT</tt> Text formatting, e.g `1000.12`
Text :: NumberFormatType

-- | <tt>NUMBER</tt> Number formatting, e.g, `1,000.12`
Number :: NumberFormatType

-- | <tt>PERCENT</tt> Percent formatting, e.g `10.12%`
Percent :: NumberFormatType

-- | <tt>CURRENCY</tt> Currency formatting, e.g `$1,000.12`
Currency :: NumberFormatType

-- | <tt>DATE</tt> Date formatting, e.g `9/26/2008`
Date :: NumberFormatType

-- | <tt>TIME</tt> Time formatting, e.g `3:59:00 PM`
Time :: NumberFormatType

-- | <tt>DATE_TIME</tt> Date+Time formatting, e.g `9/26/08 15:59:00`
DateTime :: NumberFormatType

-- | <tt>SCIENTIFIC</tt> Scientific number formatting, e.g `1.01E+03`
Scientific :: NumberFormatType

-- | 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.
--   
--   <i>See:</i> <a>gradientRule</a> smart constructor.
data GradientRule

-- | Creates a value of <a>GradientRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grMidpoint</a></li>
--   <li><a>grMaxpoint</a></li>
--   <li><a>grMinpoint</a></li>
--   </ul>
gradientRule :: GradientRule

-- | An optional midway interpolation point.
grMidpoint :: Lens' GradientRule (Maybe InterpolationPoint)

-- | The final interpolation point.
grMaxpoint :: Lens' GradientRule (Maybe InterpolationPoint)

-- | The starting interpolation point.
grMinpoint :: Lens' GradientRule (Maybe InterpolationPoint)

-- | Moves data from the source to the destination.
--   
--   <i>See:</i> <a>cutPasteRequest</a> smart constructor.
data CutPasteRequest

-- | Creates a value of <a>CutPasteRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cDestination</a></li>
--   <li><a>cSource</a></li>
--   <li><a>cPasteType</a></li>
--   </ul>
cutPasteRequest :: CutPasteRequest

-- | The top-left coordinate where the data should be pasted.
cDestination :: Lens' CutPasteRequest (Maybe GridCoordinate)

-- | The source data to cut.
cSource :: Lens' CutPasteRequest (Maybe GridRange)

-- | What kind of data to paste. All the source data will be cut,
--   regardless of what is pasted.
cPasteType :: Lens' CutPasteRequest (Maybe CutPasteRequestPasteType)

-- | The result of updating an embedded object's position.
--   
--   <i>See:</i> <a>updateEmbeddedObjectPositionResponse</a> smart
--   constructor.
data UpdateEmbeddedObjectPositionResponse

-- | Creates a value of <a>UpdateEmbeddedObjectPositionResponse</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ueoprPosition</a></li>
--   </ul>
updateEmbeddedObjectPositionResponse :: UpdateEmbeddedObjectPositionResponse

-- | The new position of the embedded object.
ueoprPosition :: Lens' UpdateEmbeddedObjectPositionResponse (Maybe EmbeddedObjectPosition)

-- | 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

-- | <tt>RELATIVE_DATE_UNSPECIFIED</tt> Default value, do not use.
RelativeDateUnspecified :: ConditionValueRelativeDate

-- | <tt>PAST_YEAR</tt> The value is one year before today.
PastYear :: ConditionValueRelativeDate

-- | <tt>PAST_MONTH</tt> The value is one month before today.
PastMonth :: ConditionValueRelativeDate

-- | <tt>PAST_WEEK</tt> The value is one week before today.
PastWeek :: ConditionValueRelativeDate

-- | <tt>YESTERDAY</tt> The value is yesterday.
Yesterday :: ConditionValueRelativeDate

-- | <tt>TODAY</tt> The value is today.
Today :: ConditionValueRelativeDate

-- | <tt>TOMORROW</tt> The value is tomorrow.
Tomorrow :: ConditionValueRelativeDate

-- | A single response from an update.
--   
--   <i>See:</i> <a>response</a> smart constructor.
data Response

-- | Creates a value of <a>Response</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rAddFilterView</a></li>
--   <li><a>rDuplicateFilterView</a></li>
--   <li><a>rUpdateEmbeddedObjectPosition</a></li>
--   <li><a>rAddSheet</a></li>
--   <li><a>rFindReplace</a></li>
--   <li><a>rAddProtectedRange</a></li>
--   <li><a>rDeleteConditionalFormatRule</a></li>
--   <li><a>rUpdateConditionalFormatRule</a></li>
--   <li><a>rAddNamedRange</a></li>
--   <li><a>rAddChart</a></li>
--   <li><a>rAddBanding</a></li>
--   <li><a>rDuplicateSheet</a></li>
--   </ul>
response :: Response

-- | A reply from adding a filter view.
rAddFilterView :: Lens' Response (Maybe AddFilterViewResponse)

-- | A reply from duplicating a filter view.
rDuplicateFilterView :: Lens' Response (Maybe DuplicateFilterViewResponse)

-- | A reply from updating an embedded object's position.
rUpdateEmbeddedObjectPosition :: Lens' Response (Maybe UpdateEmbeddedObjectPositionResponse)

-- | A reply from adding a sheet.
rAddSheet :: Lens' Response (Maybe AddSheetResponse)

-- | A reply from doing a find/replace.
rFindReplace :: Lens' Response (Maybe FindReplaceResponse)

-- | A reply from adding a protected range.
rAddProtectedRange :: Lens' Response (Maybe AddProtectedRangeResponse)

-- | A reply from deleting a conditional format rule.
rDeleteConditionalFormatRule :: Lens' Response (Maybe DeleteConditionalFormatRuleResponse)

-- | A reply from updating a conditional format rule.
rUpdateConditionalFormatRule :: Lens' Response (Maybe UpdateConditionalFormatRuleResponse)

-- | A reply from adding a named range.
rAddNamedRange :: Lens' Response (Maybe AddNamedRangeResponse)

-- | A reply from adding a chart.
rAddChart :: Lens' Response (Maybe AddChartResponse)

-- | A reply from adding a banded range.
rAddBanding :: Lens' Response (Maybe AddBandingResponse)

-- | A reply from duplicating a sheet.
rDuplicateSheet :: Lens' Response (Maybe DuplicateSheetResponse)

-- | Criteria for showing/hiding rows in a filter or filter view.
--   
--   <i>See:</i> <a>filterCriteria</a> smart constructor.
data FilterCriteria

-- | Creates a value of <a>FilterCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fcHiddenValues</a></li>
--   <li><a>fcCondition</a></li>
--   </ul>
filterCriteria :: FilterCriteria

-- | Values that should be hidden.
fcHiddenValues :: Lens' FilterCriteria [Text]

-- | 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)

-- | An error in a cell.
--   
--   <i>See:</i> <a>errorValue</a> smart constructor.
data ErrorValue

-- | Creates a value of <a>ErrorValue</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>evType</a></li>
--   <li><a>evMessage</a></li>
--   </ul>
errorValue :: ErrorValue

-- | The type of error.
evType :: Lens' ErrorValue (Maybe ErrorValueType)

-- | A message with more information about the error (in the spreadsheet's
--   locale).
evMessage :: Lens' ErrorValue (Maybe Text)

-- | Updates a conditional format rule at the given index, or moves a
--   conditional format rule to another index.
--   
--   <i>See:</i> <a>updateConditionalFormatRuleRequest</a> smart
--   constructor.
data UpdateConditionalFormatRuleRequest

-- | Creates a value of <a>UpdateConditionalFormatRuleRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucfrrRule</a></li>
--   <li><a>ucfrrNewIndex</a></li>
--   <li><a>ucfrrSheetId</a></li>
--   <li><a>ucfrrIndex</a></li>
--   </ul>
updateConditionalFormatRuleRequest :: UpdateConditionalFormatRuleRequest

-- | The rule that should replace the rule at the given index.
ucfrrRule :: Lens' UpdateConditionalFormatRuleRequest (Maybe ConditionalFormatRule)

-- | The zero-based new index the rule should end up at.
ucfrrNewIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)

-- | The sheet of the rule to move. Required if new_index is set, unused
--   otherwise.
ucfrrSheetId :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)

-- | The zero-based index of the rule that should be replaced or moved.
ucfrrIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)

-- | Deletes a conditional format rule at the given index. All subsequent
--   rules' indexes are decremented.
--   
--   <i>See:</i> <a>deleteConditionalFormatRuleRequest</a> smart
--   constructor.
data DeleteConditionalFormatRuleRequest

-- | Creates a value of <a>DeleteConditionalFormatRuleRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcfrrSheetId</a></li>
--   <li><a>dcfrrIndex</a></li>
--   </ul>
deleteConditionalFormatRuleRequest :: DeleteConditionalFormatRuleRequest

-- | The sheet the rule is being deleted from.
dcfrrSheetId :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)

-- | The zero-based index of the rule to be deleted.
dcfrrIndex :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)

-- | The order data should be sorted.
data SortSpecSortOrder

-- | <tt>SORT_ORDER_UNSPECIFIED</tt> Default value, do not use this.
SortOrderUnspecified :: SortSpecSortOrder

-- | <tt>ASCENDING</tt> Sort ascending.
Ascending :: SortSpecSortOrder

-- | <tt>DESCENDING</tt> Sort descending.
Descending :: SortSpecSortOrder

-- | The location an object is overlaid on top of a grid.
--   
--   <i>See:</i> <a>overlayPosition</a> smart constructor.
data OverlayPosition

-- | Creates a value of <a>OverlayPosition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>opHeightPixels</a></li>
--   <li><a>opOffSetYPixels</a></li>
--   <li><a>opAnchorCell</a></li>
--   <li><a>opWidthPixels</a></li>
--   <li><a>opOffSetXPixels</a></li>
--   </ul>
overlayPosition :: OverlayPosition

-- | The height of the object, in pixels. Defaults to 371.
opHeightPixels :: Lens' OverlayPosition (Maybe Int32)

-- | The vertical offset, in pixels, that the object is offset from the
--   anchor cell.
opOffSetYPixels :: Lens' OverlayPosition (Maybe Int32)

-- | The cell the object is anchored to.
opAnchorCell :: Lens' OverlayPosition (Maybe GridCoordinate)

-- | The width of the object, in pixels. Defaults to 600.
opWidthPixels :: Lens' OverlayPosition (Maybe Int32)

-- | The horizontal offset, in pixels, that the object is offset from the
--   anchor cell.
opOffSetXPixels :: Lens' OverlayPosition (Maybe Int32)

-- | Deletes the embedded object with the given ID.
--   
--   <i>See:</i> <a>deleteEmbeddedObjectRequest</a> smart constructor.
data DeleteEmbeddedObjectRequest

-- | Creates a value of <a>DeleteEmbeddedObjectRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>deorObjectId</a></li>
--   </ul>
deleteEmbeddedObjectRequest :: DeleteEmbeddedObjectRequest

-- | The ID of the embedded object to delete.
deorObjectId :: Lens' DeleteEmbeddedObjectRequest (Maybe Int32)

-- | Properties of a sheet.
--   
--   <i>See:</i> <a>sheetProperties</a> smart constructor.
data SheetProperties

-- | Creates a value of <a>SheetProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sTabColor</a></li>
--   <li><a>sGridProperties</a></li>
--   <li><a>sSheetType</a></li>
--   <li><a>sHidden</a></li>
--   <li><a>sSheetId</a></li>
--   <li><a>sTitle</a></li>
--   <li><a>sRightToLeft</a></li>
--   <li><a>sIndex</a></li>
--   </ul>
sheetProperties :: SheetProperties

-- | The color of the tab in the UI.
sTabColor :: Lens' SheetProperties (Maybe Color)

-- | 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)

-- | The type of sheet. Defaults to GRID. This field cannot be changed once
--   set.
sSheetType :: Lens' SheetProperties (Maybe SheetPropertiesSheetType)

-- | True if the sheet is hidden in the UI, false if it's visible.
sHidden :: Lens' SheetProperties (Maybe Bool)

-- | The ID of the sheet. Must be non-negative. This field cannot be
--   changed once set.
sSheetId :: Lens' SheetProperties (Maybe Int32)

-- | The name of the sheet.
sTitle :: Lens' SheetProperties (Maybe Text)

-- | True if the sheet is an RTL sheet instead of an LTR sheet.
sRightToLeft :: Lens' SheetProperties (Maybe Bool)

-- | The index of the sheet within the spreadsheet. When adding or updating
--   sheet properties, if this field is excluded then the sheet will be
--   added or moved to the end of the sheet list. When updating sheet
--   indices or inserting sheets, movement is considered in "before the
--   move" indexes. For example, if there were 3 sheets (S1, S2, S3) in
--   order to move S1 ahead of S2 the index would have to be set to 2. A
--   sheet index update request will be ignored if the requested index is
--   identical to the sheets current index or if the requested new index is
--   equal to the current sheet index + 1.
sIndex :: Lens' SheetProperties (Maybe Int32)

-- | 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.
--   
--   <i>See:</i> <a>filterViewCriteria</a> smart constructor.
data FilterViewCriteria

-- | Creates a value of <a>FilterViewCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fvcAddtional</a></li>
--   </ul>
filterViewCriteria :: HashMap Text FilterCriteria -> FilterViewCriteria
fvcAddtional :: Lens' FilterViewCriteria (HashMap Text FilterCriteria)

-- | The response when updating a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>batchUpdateValuesResponse</a> smart constructor.
data BatchUpdateValuesResponse

-- | Creates a value of <a>BatchUpdateValuesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>buvrTotalUpdatedColumns</a></li>
--   <li><a>buvrResponses</a></li>
--   <li><a>buvrSpreadsheetId</a></li>
--   <li><a>buvrTotalUpdatedSheets</a></li>
--   <li><a>buvrTotalUpdatedCells</a></li>
--   <li><a>buvrTotalUpdatedRows</a></li>
--   </ul>
batchUpdateValuesResponse :: BatchUpdateValuesResponse

-- | The total number of columns where at least one cell in the column was
--   updated.
buvrTotalUpdatedColumns :: Lens' BatchUpdateValuesResponse (Maybe Int32)

-- | One UpdateValuesResponse per requested range, in the same order as the
--   requests appeared.
buvrResponses :: Lens' BatchUpdateValuesResponse [UpdateValuesResponse]

-- | The spreadsheet the updates were applied to.
buvrSpreadsheetId :: Lens' BatchUpdateValuesResponse (Maybe Text)

-- | The total number of sheets where at least one cell in the sheet was
--   updated.
buvrTotalUpdatedSheets :: Lens' BatchUpdateValuesResponse (Maybe Int32)

-- | The total number of cells updated.
buvrTotalUpdatedCells :: Lens' BatchUpdateValuesResponse (Maybe Int32)

-- | The total number of rows where at least one cell in the row was
--   updated.
buvrTotalUpdatedRows :: Lens' BatchUpdateValuesResponse (Maybe Int32)

-- | Updates properties of the sheet with the specified sheetId.
--   
--   <i>See:</i> <a>updateSheetPropertiesRequest</a> smart constructor.
data UpdateSheetPropertiesRequest

-- | Creates a value of <a>UpdateSheetPropertiesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usprFields</a></li>
--   <li><a>usprProperties</a></li>
--   </ul>
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.
usprFields :: Lens' UpdateSheetPropertiesRequest (Maybe FieldMask)

-- | The properties to update.
usprProperties :: Lens' UpdateSheetPropertiesRequest (Maybe SheetProperties)

-- | Resource that represents a spreadsheet.
--   
--   <i>See:</i> <a>spreadsheet</a> smart constructor.
data Spreadsheet

-- | Creates a value of <a>Spreadsheet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sprSheets</a></li>
--   <li><a>sprNamedRanges</a></li>
--   <li><a>sprSpreadsheetId</a></li>
--   <li><a>sprSpreadsheetURL</a></li>
--   <li><a>sprProperties</a></li>
--   </ul>
spreadsheet :: Spreadsheet

-- | The sheets that are part of a spreadsheet.
sprSheets :: Lens' Spreadsheet [Sheet]

-- | The named ranges defined in a spreadsheet.
sprNamedRanges :: Lens' Spreadsheet [NamedRange]

-- | The ID of the spreadsheet. This field is read-only.
sprSpreadsheetId :: Lens' Spreadsheet (Maybe Text)

-- | The url of the spreadsheet. This field is read-only.
sprSpreadsheetURL :: Lens' Spreadsheet (Maybe Text)

-- | Overall properties of a spreadsheet.
sprProperties :: Lens' Spreadsheet (Maybe SpreadsheetProperties)

-- | Inserts rows or columns in a sheet at a particular index.
--   
--   <i>See:</i> <a>insertDimensionRequest</a> smart constructor.
data InsertDimensionRequest

-- | Creates a value of <a>InsertDimensionRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>idrRange</a></li>
--   <li><a>idrInheritFromBefore</a></li>
--   </ul>
insertDimensionRequest :: InsertDimensionRequest

-- | The dimensions to insert. Both the start and end indexes must be
--   bounded.
idrRange :: Lens' InsertDimensionRequest (Maybe DimensionRange)

-- | 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)

-- | 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

-- | <tt>PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED</tt> The default, do not
--   use.
PivotStandardValueFunctionUnspecified :: PivotValueSummarizeFunction

-- | <tt>SUM</tt> Corresponds to the `SUM` function.
Sum :: PivotValueSummarizeFunction

-- | <tt>COUNTA</tt> Corresponds to the `COUNTA` function.
Counta :: PivotValueSummarizeFunction

-- | <tt>COUNT</tt> Corresponds to the `COUNT` function.
Count :: PivotValueSummarizeFunction

-- | <tt>COUNTUNIQUE</tt> Corresponds to the `COUNTUNIQUE` function.
Countunique :: PivotValueSummarizeFunction

-- | <tt>AVERAGE</tt> Corresponds to the `AVERAGE` function.
Average :: PivotValueSummarizeFunction

-- | <tt>MAX</tt> Corresponds to the `MAX` function.
Max :: PivotValueSummarizeFunction

-- | <tt>MIN</tt> Corresponds to the `MIN` function.
Min :: PivotValueSummarizeFunction

-- | <tt>MEDIAN</tt> Corresponds to the `MEDIAN` function.
Median :: PivotValueSummarizeFunction

-- | <tt>PRODUCT</tt> Corresponds to the `PRODUCT` function.
Product :: PivotValueSummarizeFunction

-- | <tt>STDEV</tt> Corresponds to the `STDEV` function.
Stdev :: PivotValueSummarizeFunction

-- | <tt>STDEVP</tt> Corresponds to the `STDEVP` function.
Stdevp :: PivotValueSummarizeFunction

-- | <tt>VAR</tt> Corresponds to the `VAR` function.
Var :: PivotValueSummarizeFunction

-- | <tt>VARP</tt> Corresponds to the `VARP` function.
Varp :: PivotValueSummarizeFunction

-- | <tt>CUSTOM</tt> Indicates the formula should be used as-is. Only valid
--   if PivotValue.formula was set.
Custom :: PivotValueSummarizeFunction

-- | A single interpolation point on a gradient conditional format. These
--   pin the gradient color scale according to the color, type and value
--   chosen.
--   
--   <i>See:</i> <a>interpolationPoint</a> smart constructor.
data InterpolationPoint

-- | Creates a value of <a>InterpolationPoint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipColor</a></li>
--   <li><a>ipValue</a></li>
--   <li><a>ipType</a></li>
--   </ul>
interpolationPoint :: InterpolationPoint

-- | The color this interpolation point should use.
ipColor :: Lens' InterpolationPoint (Maybe Color)

-- | The value this interpolation point uses. May be a formula. Unused if
--   type is MIN or MAX.
ipValue :: Lens' InterpolationPoint (Maybe Text)

-- | How the value should be interpreted.
ipType :: Lens' InterpolationPoint (Maybe InterpolationPointType)

-- | Data about a specific cell.
--   
--   <i>See:</i> <a>cellData</a> smart constructor.
data CellData

-- | Creates a value of <a>CellData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdTextFormatRuns</a></li>
--   <li><a>cdNote</a></li>
--   <li><a>cdUserEnteredValue</a></li>
--   <li><a>cdUserEnteredFormat</a></li>
--   <li><a>cdEffectiveFormat</a></li>
--   <li><a>cdPivotTable</a></li>
--   <li><a>cdFormattedValue</a></li>
--   <li><a>cdDataValidation</a></li>
--   <li><a>cdHyperlink</a></li>
--   <li><a>cdEffectiveValue</a></li>
--   </ul>
cellData :: CellData

-- | Runs of rich text applied to subsections of the cell. Runs are only
--   valid on user entered strings, not formulas, bools, or numbers. Runs
--   start at specific indexes in the text and continue until the next run.
--   Properties of a run will continue unless explicitly changed in a
--   subsequent run (and properties of the first run will continue the
--   properties of the cell unless explicitly changed). When writing, the
--   new runs will overwrite any prior runs. When writing a new
--   user_entered_value, previous runs will be erased.
cdTextFormatRuns :: Lens' CellData [TextFormatRun]

-- | Any note on the cell.
cdNote :: Lens' CellData (Maybe Text)

-- | 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)

-- | 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)

-- | 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)

-- | 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)

-- | 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)

-- | 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)

-- | A hyperlink this cell points to, if any. This field is read-only. (To
--   set it, use a `=HYPERLINK` formula.)
cdHyperlink :: Lens' CellData (Maybe Text)

-- | The effective value of the cell. For cells with formulas, this will be
--   the calculated value. For cells with literals, this will be the same
--   as the user_entered_value. This field is read-only.
cdEffectiveValue :: Lens' CellData (Maybe ExtendedValue)

-- | Source ranges for a chart.
--   
--   <i>See:</i> <a>chartSourceRange</a> smart constructor.
data ChartSourceRange

-- | Creates a value of <a>ChartSourceRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csrSources</a></li>
--   </ul>
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) &amp; all series
--   must have the same number of source ranges. If using more than one
--   source range, then the source range at a given offset must be
--   contiguous across the domain and series. For example, these are valid
--   configurations: domain sources: A1:A5 series1 sources: B1:B5 series2
--   sources: D6:D10 domain sources: A1:A5, C10:C12 series1 sources: B1:B5,
--   D10:D12 series2 sources: C1:C5, E10:E12
csrSources :: Lens' ChartSourceRange [GridRange]

-- | The result of adding a named range.
--   
--   <i>See:</i> <a>addNamedRangeResponse</a> smart constructor.
data AddNamedRangeResponse

-- | Creates a value of <a>AddNamedRangeResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>anrrNamedRange</a></li>
--   </ul>
addNamedRangeResponse :: AddNamedRangeResponse

-- | The named range to add.
anrrNamedRange :: Lens' AddNamedRangeResponse (Maybe NamedRange)

-- | The result of adding a chart to a spreadsheet.
--   
--   <i>See:</i> <a>addChartResponse</a> smart constructor.
data AddChartResponse

-- | Creates a value of <a>AddChartResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acrChart</a></li>
--   </ul>
addChartResponse :: AddChartResponse

-- | The newly added chart.
acrChart :: Lens' AddChartResponse (Maybe EmbeddedChart)

-- | Updates a chart's specifications. (This does not move or resize a
--   chart. To move or resize a chart, use
--   UpdateEmbeddedObjectPositionRequest.)
--   
--   <i>See:</i> <a>updateChartSpecRequest</a> smart constructor.
data UpdateChartSpecRequest

-- | Creates a value of <a>UpdateChartSpecRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucsrSpec</a></li>
--   <li><a>ucsrChartId</a></li>
--   </ul>
updateChartSpecRequest :: UpdateChartSpecRequest

-- | The specification to apply to the chart.
ucsrSpec :: Lens' UpdateChartSpecRequest (Maybe ChartSpec)

-- | The ID of the chart to update.
ucsrChartId :: Lens' UpdateChartSpecRequest (Maybe Int32)

-- | Sets the basic filter associated with a sheet.
--   
--   <i>See:</i> <a>setBasicFilterRequest</a> smart constructor.
data SetBasicFilterRequest

-- | Creates a value of <a>SetBasicFilterRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sbfrFilter</a></li>
--   </ul>
setBasicFilterRequest :: SetBasicFilterRequest

-- | The filter to set.
sbfrFilter :: Lens' SetBasicFilterRequest (Maybe BasicFilter)

-- | Properties of a grid.
--   
--   <i>See:</i> <a>gridProperties</a> smart constructor.
data GridProperties

-- | Creates a value of <a>GridProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gpFrozenColumnCount</a></li>
--   <li><a>gpColumnCount</a></li>
--   <li><a>gpHideGridlines</a></li>
--   <li><a>gpFrozenRowCount</a></li>
--   <li><a>gpRowCount</a></li>
--   </ul>
gridProperties :: GridProperties

-- | The number of columns that are frozen in the grid.
gpFrozenColumnCount :: Lens' GridProperties (Maybe Int32)

-- | The number of columns in the grid.
gpColumnCount :: Lens' GridProperties (Maybe Int32)

-- | True if the grid isn't showing gridlines in the UI.
gpHideGridlines :: Lens' GridProperties (Maybe Bool)

-- | The number of rows that are frozen in the grid.
gpFrozenRowCount :: Lens' GridProperties (Maybe Int32)

-- | The number of rows in the grid.
gpRowCount :: Lens' GridProperties (Maybe Int32)

-- | How a hyperlink, if it exists, should be displayed in the cell.
data CellFormatHyperlinkDisplayType

-- | <tt>HYPERLINK_DISPLAY_TYPE_UNSPECIFIED</tt> The default value: the
--   hyperlink is rendered. Do not use this.
HyperlinkDisplayTypeUnspecified :: CellFormatHyperlinkDisplayType

-- | <tt>LINKED</tt> A hyperlink should be explicitly rendered.
Linked :: CellFormatHyperlinkDisplayType

-- | <tt>PLAIN_TEXT</tt> A hyperlink should not be rendered.
PlainText :: CellFormatHyperlinkDisplayType

-- | 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.
--   
--   <i>See:</i> <a>basicFilterCriteria</a> smart constructor.
data BasicFilterCriteria

-- | Creates a value of <a>BasicFilterCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bfcAddtional</a></li>
--   </ul>
basicFilterCriteria :: HashMap Text FilterCriteria -> BasicFilterCriteria
bfcAddtional :: Lens' BasicFilterCriteria (HashMap Text FilterCriteria)

-- | Adds a new banded range to the spreadsheet.
--   
--   <i>See:</i> <a>addBandingRequest</a> smart constructor.
data AddBandingRequest

-- | Creates a value of <a>AddBandingRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>abrBandedRange</a></li>
--   </ul>
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.)
abrBandedRange :: Lens' AddBandingRequest (Maybe BandedRange)

-- | Updates properties of dimensions within the specified range.
--   
--   <i>See:</i> <a>updateDimensionPropertiesRequest</a> smart constructor.
data UpdateDimensionPropertiesRequest

-- | Creates a value of <a>UpdateDimensionPropertiesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udprRange</a></li>
--   <li><a>udprFields</a></li>
--   <li><a>udprProperties</a></li>
--   </ul>
updateDimensionPropertiesRequest :: UpdateDimensionPropertiesRequest

-- | The rows or columns to update.
udprRange :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionRange)

-- | The fields that should be updated. At least one field must be
--   specified. The root `properties` is implied and should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
udprFields :: Lens' UpdateDimensionPropertiesRequest (Maybe FieldMask)

-- | Properties to update.
udprProperties :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionProperties)

-- | An optional mapping of filters per source column offset. The filters
--   will be applied before aggregating data into the pivot table. The
--   map's key is the column offset of the source range that you want to
--   filter, and the value is the criteria for that column. For example, if
--   the source was `C10:E15`, a key of `0` will have the filter for column
--   `C`, whereas the key `1` is for column `D`.
--   
--   <i>See:</i> <a>pivotTableCriteria</a> smart constructor.
data PivotTableCriteria

-- | Creates a value of <a>PivotTableCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptcAddtional</a></li>
--   </ul>
pivotTableCriteria :: HashMap Text PivotFilterCriteria -> PivotTableCriteria
ptcAddtional :: Lens' PivotTableCriteria (HashMap Text PivotFilterCriteria)

-- | Fills in more data based on existing data.
--   
--   <i>See:</i> <a>autoFillRequest</a> smart constructor.
data AutoFillRequest

-- | Creates a value of <a>AutoFillRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>afrSourceAndDestination</a></li>
--   <li><a>afrUseAlternateSeries</a></li>
--   <li><a>afrRange</a></li>
--   </ul>
autoFillRequest :: AutoFillRequest

-- | 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)

-- | 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)

-- | 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)

-- | Duplicates the contents of a sheet.
--   
--   <i>See:</i> <a>duplicateSheetRequest</a> smart constructor.
data DuplicateSheetRequest

-- | Creates a value of <a>DuplicateSheetRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrNewSheetName</a></li>
--   <li><a>dsrInsertSheetIndex</a></li>
--   <li><a>dsrSourceSheetId</a></li>
--   <li><a>dsrNewSheetId</a></li>
--   </ul>
duplicateSheetRequest :: DuplicateSheetRequest

-- | The name of the new sheet. If empty, a new name is chosen for you.
dsrNewSheetName :: Lens' DuplicateSheetRequest (Maybe Text)

-- | 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)

-- | The sheet to duplicate.
dsrSourceSheetId :: Lens' DuplicateSheetRequest (Maybe 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.
dsrNewSheetId :: Lens' DuplicateSheetRequest (Maybe Int32)

-- | The result of a filter view being duplicated.
--   
--   <i>See:</i> <a>duplicateFilterViewResponse</a> smart constructor.
data DuplicateFilterViewResponse

-- | Creates a value of <a>DuplicateFilterViewResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfvrFilter</a></li>
--   </ul>
duplicateFilterViewResponse :: DuplicateFilterViewResponse

-- | The newly created filter.
dfvrFilter :: Lens' DuplicateFilterViewResponse (Maybe FilterView)

-- | The type of sheet. Defaults to GRID. This field cannot be changed once
--   set.
data SheetPropertiesSheetType

-- | <tt>SHEET_TYPE_UNSPECIFIED</tt> Default value, do not use.
SheetTypeUnspecified :: SheetPropertiesSheetType

-- | <tt>GRID</tt> The sheet is a grid.
Grid :: SheetPropertiesSheetType

-- | <tt>OBJECT</tt> The sheet has no grid and instead has an object like a
--   chart or image.
Object :: SheetPropertiesSheetType

-- | The request for updating more than one range of values in a
--   spreadsheet.
--   
--   <i>See:</i> <a>batchUpdateValuesRequest</a> smart constructor.
data BatchUpdateValuesRequest

-- | Creates a value of <a>BatchUpdateValuesRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>buvrData</a></li>
--   <li><a>buvrValueInputOption</a></li>
--   <li><a>buvrIncludeValuesInResponse</a></li>
--   <li><a>buvrResponseDateTimeRenderOption</a></li>
--   <li><a>buvrResponseValueRenderOption</a></li>
--   </ul>
batchUpdateValuesRequest :: BatchUpdateValuesRequest

-- | The new values to apply to the spreadsheet.
buvrData :: Lens' BatchUpdateValuesRequest [ValueRange]

-- | How the input data should be interpreted.
buvrValueInputOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestValueInputOption)

-- | 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)

-- | 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)

-- | Determines how values in the response should be rendered. The default
--   render option is ValueRenderOption.FORMATTED_VALUE.
buvrResponseValueRenderOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestResponseValueRenderOption)

-- | Adds a chart to a sheet in the spreadsheet.
--   
--   <i>See:</i> <a>addChartRequest</a> smart constructor.
data AddChartRequest

-- | Creates a value of <a>AddChartRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aChart</a></li>
--   </ul>
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 a chart that already exists.)
aChart :: Lens' AddChartRequest (Maybe EmbeddedChart)

-- | A named range.
--   
--   <i>See:</i> <a>namedRange</a> smart constructor.
data NamedRange

-- | Creates a value of <a>NamedRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nrNamedRangeId</a></li>
--   <li><a>nrName</a></li>
--   <li><a>nrRange</a></li>
--   </ul>
namedRange :: NamedRange

-- | The ID of the named range.
nrNamedRangeId :: Lens' NamedRange (Maybe Text)

-- | The name of the named range.
nrName :: Lens' NamedRange (Maybe Text)

-- | The range this represents.
nrRange :: Lens' NamedRange (Maybe GridRange)

-- | Merges all cells in the range.
--   
--   <i>See:</i> <a>mergeCellsRequest</a> smart constructor.
data MergeCellsRequest

-- | Creates a value of <a>MergeCellsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcrMergeType</a></li>
--   <li><a>mcrRange</a></li>
--   </ul>
mergeCellsRequest :: MergeCellsRequest

-- | How the cells should be merged.
mcrMergeType :: Lens' MergeCellsRequest (Maybe MergeCellsRequestMergeType)

-- | The range of cells to merge.
mcrRange :: Lens' MergeCellsRequest (Maybe GridRange)

-- | How the cells should be merged.
data MergeCellsRequestMergeType

-- | <tt>MERGE_ALL</tt> Create a single merge from the range
MergeAll :: MergeCellsRequestMergeType

-- | <tt>MERGE_COLUMNS</tt> Create a merge for each column in the range
MergeColumns :: MergeCellsRequestMergeType

-- | <tt>MERGE_ROWS</tt> Create a merge for each row in the range
MergeRows :: MergeCellsRequestMergeType

-- | The horizontal alignment of the value in the cell.
data CellFormatHorizontalAlignment

-- | <tt>HORIZONTAL_ALIGN_UNSPECIFIED</tt> The horizontal alignment is not
--   specified. Do not use this.
HorizontalAlignUnspecified :: CellFormatHorizontalAlignment

-- | <tt>LEFT</tt> The text is explicitly aligned to the left of the cell.
Left' :: CellFormatHorizontalAlignment

-- | <tt>CENTER</tt> The text is explicitly aligned to the center of the
--   cell.
Center :: CellFormatHorizontalAlignment

-- | <tt>RIGHT</tt> The text is explicitly aligned to the right of the
--   cell.
Right' :: CellFormatHorizontalAlignment

-- | A border along a cell.
--   
--   <i>See:</i> <a>bOrder</a> smart constructor.
data BOrder

-- | Creates a value of <a>BOrder</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>boStyle</a></li>
--   <li><a>boColor</a></li>
--   <li><a>boWidth</a></li>
--   </ul>
bOrder :: BOrder

-- | The style of the border.
boStyle :: Lens' BOrder (Maybe BOrderStyle)

-- | The color of the border.
boColor :: Lens' BOrder (Maybe Color)

-- | The width of the border, in pixels. Deprecated; the width is
--   determined by the "style" field.
boWidth :: Lens' BOrder (Maybe Int32)

-- | The kinds of value that a cell in a spreadsheet can have.
--   
--   <i>See:</i> <a>extendedValue</a> smart constructor.
data ExtendedValue

-- | Creates a value of <a>ExtendedValue</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>evBoolValue</a></li>
--   <li><a>evNumberValue</a></li>
--   <li><a>evErrorValue</a></li>
--   <li><a>evStringValue</a></li>
--   <li><a>evFormulaValue</a></li>
--   </ul>
extendedValue :: ExtendedValue

-- | Represents a boolean value.
evBoolValue :: Lens' ExtendedValue (Maybe Bool)

-- | Represents a double value. Note: Dates, Times and DateTimes are
--   represented as doubles in "serial number" format.
evNumberValue :: Lens' ExtendedValue (Maybe Double)

-- | Represents an error. This field is read-only.
evErrorValue :: Lens' ExtendedValue (Maybe ErrorValue)

-- | 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)

-- | Represents a formula.
evFormulaValue :: Lens' ExtendedValue (Maybe Text)

-- | Adds a named range to the spreadsheet.
--   
--   <i>See:</i> <a>addNamedRangeRequest</a> smart constructor.
data AddNamedRangeRequest

-- | Creates a value of <a>AddNamedRangeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aNamedRange</a></li>
--   </ul>
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.)
aNamedRange :: Lens' AddNamedRangeRequest (Maybe NamedRange)

-- | Criteria for showing/hiding rows in a pivot table.
--   
--   <i>See:</i> <a>pivotFilterCriteria</a> smart constructor.
data PivotFilterCriteria

-- | Creates a value of <a>PivotFilterCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pfcVisibleValues</a></li>
--   </ul>
pivotFilterCriteria :: PivotFilterCriteria

-- | Values that should be included. Values not listed here are excluded.
pfcVisibleValues :: Lens' PivotFilterCriteria [Text]

-- | 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.
--   
--   <i>See:</i> <a>dimensionRange</a> smart constructor.
data DimensionRange

-- | Creates a value of <a>DimensionRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drDimension</a></li>
--   <li><a>drEndIndex</a></li>
--   <li><a>drSheetId</a></li>
--   <li><a>drStartIndex</a></li>
--   </ul>
dimensionRange :: DimensionRange

-- | The dimension of the span.
drDimension :: Lens' DimensionRange (Maybe DimensionRangeDimension)

-- | The end (exclusive) of the span, or not set if unbounded.
drEndIndex :: Lens' DimensionRange (Maybe Int32)

-- | The sheet this span is on.
drSheetId :: Lens' DimensionRange (Maybe Int32)

-- | The start (inclusive) of the span, or not set if unbounded.
drStartIndex :: Lens' DimensionRange (Maybe Int32)

-- | Updates properties of a spreadsheet.
--   
--   <i>See:</i> <a>updateSpreadsheetPropertiesRequest</a> smart
--   constructor.
data UpdateSpreadsheetPropertiesRequest

-- | Creates a value of <a>UpdateSpreadsheetPropertiesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uFields</a></li>
--   <li><a>uProperties</a></li>
--   </ul>
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.
uFields :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe FieldMask)

-- | The properties to update.
uProperties :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe SpreadsheetProperties)

-- | The result of adding a new protected range.
--   
--   <i>See:</i> <a>addProtectedRangeResponse</a> smart constructor.
data AddProtectedRangeResponse

-- | Creates a value of <a>AddProtectedRangeResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aProtectedRange</a></li>
--   </ul>
addProtectedRangeResponse :: AddProtectedRangeResponse

-- | The newly added protected range.
aProtectedRange :: Lens' AddProtectedRangeResponse (Maybe ProtectedRange)

-- | Appends rows or columns to the end of a sheet.
--   
--   <i>See:</i> <a>appendDimensionRequest</a> smart constructor.
data AppendDimensionRequest

-- | Creates a value of <a>AppendDimensionRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adrLength</a></li>
--   <li><a>adrDimension</a></li>
--   <li><a>adrSheetId</a></li>
--   </ul>
appendDimensionRequest :: AppendDimensionRequest

-- | The number of rows or columns to append.
adrLength :: Lens' AppendDimensionRequest (Maybe Int32)

-- | Whether rows or columns should be appended.
adrDimension :: Lens' AppendDimensionRequest (Maybe AppendDimensionRequestDimension)

-- | The sheet to append rows or columns to.
adrSheetId :: Lens' AppendDimensionRequest (Maybe Int32)

-- | The definition of how a value in a pivot table should be calculated.
--   
--   <i>See:</i> <a>pivotValue</a> smart constructor.
data PivotValue

-- | Creates a value of <a>PivotValue</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pvSourceColumnOffSet</a></li>
--   <li><a>pvFormula</a></li>
--   <li><a>pvName</a></li>
--   <li><a>pvSummarizeFunction</a></li>
--   </ul>
pivotValue :: PivotValue

-- | 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)

-- | A custom formula to calculate the value. The formula must start with
--   an `=` character.
pvFormula :: Lens' PivotValue (Maybe Text)

-- | A name to use for the value. This is only used if formula was set.
--   Otherwise, the column name is used.
pvName :: Lens' PivotValue (Maybe Text)

-- | 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)

-- | Unmerges cells in the given range.
--   
--   <i>See:</i> <a>unmergeCellsRequest</a> smart constructor.
data UnmergeCellsRequest

-- | Creates a value of <a>UnmergeCellsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucrRange</a></li>
--   </ul>
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.
ucrRange :: Lens' UnmergeCellsRequest (Maybe GridRange)

-- | Deletes the requested sheet.
--   
--   <i>See:</i> <a>deleteSheetRequest</a> smart constructor.
data DeleteSheetRequest

-- | Creates a value of <a>DeleteSheetRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrSheetId</a></li>
--   </ul>
deleteSheetRequest :: DeleteSheetRequest

-- | The ID of the sheet to delete.
dsrSheetId :: Lens' DeleteSheetRequest (Maybe Int32)

-- | The type of condition.
data BooleanConditionType

-- | <tt>CONDITION_TYPE_UNSPECIFIED</tt> The default value, do not use.
ConditionTypeUnspecified :: BooleanConditionType

-- | <tt>NUMBER_GREATER</tt> The cell's value must be greater than the
--   condition's value. Supported by data validation, conditional
--   formatting and filters. Requires a single ConditionValue.
NumberGreater :: BooleanConditionType

-- | <tt>NUMBER_GREATER_THAN_EQ</tt> 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.
NumberGreaterThanEQ :: BooleanConditionType

-- | <tt>NUMBER_LESS</tt> The cell's value must be less than the
--   condition's value. Supported by data validation, conditional
--   formatting and filters. Requires a single ConditionValue.
NumberLess :: BooleanConditionType

-- | <tt>NUMBER_LESS_THAN_EQ</tt> 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.
NumberLessThanEQ :: BooleanConditionType

-- | <tt>NUMBER_EQ</tt> The cell's value must be equal to the condition's
--   value. Supported by data validation, conditional formatting and
--   filters. Requires a single ConditionValue.
NumberEQ :: BooleanConditionType

-- | <tt>NUMBER_NOT_EQ</tt> 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.
NumberNotEQ :: BooleanConditionType

-- | <tt>NUMBER_BETWEEN</tt> The cell's value must be between the two
--   condition values. Supported by data validation, conditional formatting
--   and filters. Requires exactly two ConditionValues.
NumberBetween :: BooleanConditionType

-- | <tt>NUMBER_NOT_BETWEEN</tt> The cell's value must not be between the
--   two condition values. Supported by data validation, conditional
--   formatting and filters. Requires exactly two ConditionValues.
NumberNotBetween :: BooleanConditionType

-- | <tt>TEXT_CONTAINS</tt> The cell's value must contain the condition's
--   value. Supported by data validation, conditional formatting and
--   filters. Requires a single ConditionValue.
TextContains :: BooleanConditionType

-- | <tt>TEXT_NOT_CONTAINS</tt> The cell's value must not contain the
--   condition's value. Supported by data validation, conditional
--   formatting and filters. Requires a single ConditionValue.
TextNotContains :: BooleanConditionType

-- | <tt>TEXT_STARTS_WITH</tt> The cell's value must start with the
--   condition's value. Supported by conditional formatting and filters.
--   Requires a single ConditionValue.
TextStartsWith :: BooleanConditionType

-- | <tt>TEXT_ENDS_WITH</tt> The cell's value must end with the condition's
--   value. Supported by conditional formatting and filters. Requires a
--   single ConditionValue.
TextEndsWith :: BooleanConditionType

-- | <tt>TEXT_EQ</tt> The cell's value must be exactly the condition's
--   value. Supported by data validation, conditional formatting and
--   filters. Requires a single ConditionValue.
TextEQ :: BooleanConditionType

-- | <tt>TEXT_IS_EMAIL</tt> The cell's value must be a valid email address.
--   Supported by data validation. Requires no ConditionValues.
TextIsEmail :: BooleanConditionType

-- | <tt>TEXT_IS_URL</tt> The cell's value must be a valid URL. Supported
--   by data validation. Requires no ConditionValues.
TextIsURL :: BooleanConditionType

-- | <tt>DATE_EQ</tt> 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.
DateEQ :: BooleanConditionType

-- | <tt>DATE_BEFORE</tt> 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.
DateBefore :: BooleanConditionType

-- | <tt>DATE_AFTER</tt> 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.
DateAfter :: BooleanConditionType

-- | <tt>DATE_ON_OR_BEFORE</tt> 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.
DateOnOrBefore :: BooleanConditionType

-- | <tt>DATE_ON_OR_AFTER</tt> 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.
DateOnOrAfter :: BooleanConditionType

-- | <tt>DATE_BETWEEN</tt> The cell's value must be between the dates of
--   the two condition values. Supported by data validation. Requires
--   exactly two ConditionValues.
DateBetween :: BooleanConditionType

-- | <tt>DATE_NOT_BETWEEN</tt> The cell's value must be outside the dates
--   of the two condition values. Supported by data validation. Requires
--   exactly two ConditionValues.
DateNotBetween :: BooleanConditionType

-- | <tt>DATE_IS_VALID</tt> The cell's value must be a date. Supported by
--   data validation. Requires no ConditionValues.
DateIsValid :: BooleanConditionType

-- | <tt>ONE_OF_RANGE</tt> 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.
OneOfRange :: BooleanConditionType

-- | <tt>ONE_OF_LIST</tt> The cell's value must in the list of condition
--   values. Supported by data validation. Supports any number of condition
--   values, one per item in the list. Formulas are not supported in the
--   values.
OneOfList :: BooleanConditionType

-- | <tt>BLANK</tt> The cell's value must be empty. Supported by
--   conditional formatting and filters. Requires no ConditionValues.
Blank :: BooleanConditionType

-- | <tt>NOT_BLANK</tt> The cell's value must not be empty. Supported by
--   conditional formatting and filters. Requires no ConditionValues.
NotBlank :: BooleanConditionType

-- | <tt>CUSTOM_FORMULA</tt> The condition's formula must evaluate to true.
--   Supported by data validation, conditional formatting and filters.
--   Requires a single ConditionValue.
CustomFormula :: BooleanConditionType

-- | A banded (alternating colors) range in a sheet.
--   
--   <i>See:</i> <a>bandedRange</a> smart constructor.
data BandedRange

-- | Creates a value of <a>BandedRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>brBandedRangeId</a></li>
--   <li><a>brRowProperties</a></li>
--   <li><a>brRange</a></li>
--   <li><a>brColumnProperties</a></li>
--   </ul>
bandedRange :: BandedRange

-- | The id of the banded range.
brBandedRangeId :: Lens' BandedRange (Maybe Int32)

-- | Properties for row bands. These properties will be applied on a
--   row-by-row basis throughout all the rows in the range. At least one of
--   row_properties or column_properties must be specified.
brRowProperties :: Lens' BandedRange (Maybe BandingProperties)

-- | The range over which these properties are applied.
brRange :: Lens' BandedRange (Maybe GridRange)

-- | Properties for column bands. These properties will be applied on a
--   column- by-column basis throughout all the columns in the range. At
--   least one of row_properties or column_properties must be specified.
brColumnProperties :: Lens' BandedRange (Maybe BandingProperties)

-- | 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.
--   
--   <i>See:</i> <a>updateBOrdersRequest</a> smart constructor.
data UpdateBOrdersRequest

-- | Creates a value of <a>UpdateBOrdersRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uborBottom</a></li>
--   <li><a>uborInnerHorizontal</a></li>
--   <li><a>uborLeft</a></li>
--   <li><a>uborInnerVertical</a></li>
--   <li><a>uborRange</a></li>
--   <li><a>uborRight</a></li>
--   <li><a>uborTop</a></li>
--   </ul>
updateBOrdersRequest :: UpdateBOrdersRequest

-- | The border to put at the bottom of the range.
uborBottom :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The horizontal border to put within the range.
uborInnerHorizontal :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The border to put at the left of the range.
uborLeft :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The vertical border to put within the range.
uborInnerVertical :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The range whose borders should be updated.
uborRange :: Lens' UpdateBOrdersRequest (Maybe GridRange)

-- | The border to put at the right of the range.
uborRight :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The border to put at the top of the range.
uborTop :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | 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

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
VRMDDimensionUnspecified :: ValueRangeMajorDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
VRMDRows :: ValueRangeMajorDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
VRMDColumns :: ValueRangeMajorDimension

-- | The order the values in this group should be sorted.
data PivotGroupSortOrder

-- | <tt>SORT_ORDER_UNSPECIFIED</tt> Default value, do not use this.
PGSOSortOrderUnspecified :: PivotGroupSortOrder

-- | <tt>ASCENDING</tt> Sort ascending.
PGSOAscending :: PivotGroupSortOrder

-- | <tt>DESCENDING</tt> Sort descending.
PGSODescending :: PivotGroupSortOrder

-- | The type of the chart.
data BasicChartSpecChartType

-- | <tt>BASIC_CHART_TYPE_UNSPECIFIED</tt> Default value, do not use.
BasicChartTypeUnspecified :: BasicChartSpecChartType

-- | <tt>BAR</tt> A <a>bar chart</a>.
Bar :: BasicChartSpecChartType

-- | <tt>LINE</tt> A <a>line chart</a>.
Line :: BasicChartSpecChartType

-- | <tt>AREA</tt> An <a>area chart</a>.
Area :: BasicChartSpecChartType

-- | <tt>COLUMN</tt> A <a>column chart</a>.
Column :: BasicChartSpecChartType

-- | <tt>SCATTER</tt> A <a>scatter chart</a>.
Scatter :: BasicChartSpecChartType

-- | <tt>COMBO</tt> A <a>combo chart</a>.
Combo :: BasicChartSpecChartType

-- | A chart embedded in a sheet.
--   
--   <i>See:</i> <a>embeddedChart</a> smart constructor.
data EmbeddedChart

-- | Creates a value of <a>EmbeddedChart</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ecSpec</a></li>
--   <li><a>ecPosition</a></li>
--   <li><a>ecChartId</a></li>
--   </ul>
embeddedChart :: EmbeddedChart

-- | The specification of the chart.
ecSpec :: Lens' EmbeddedChart (Maybe ChartSpec)

-- | The position of the chart.
ecPosition :: Lens' EmbeddedChart (Maybe EmbeddedObjectPosition)

-- | The ID of the chart.
ecChartId :: Lens' EmbeddedChart (Maybe Int32)

-- | Data about each cell in a row.
--   
--   <i>See:</i> <a>rowData</a> smart constructor.
data RowData

-- | Creates a value of <a>RowData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdValues</a></li>
--   </ul>
rowData :: RowData

-- | The values in the row, one per column.
rdValues :: Lens' RowData [CellData]

-- | The editors of a protected range.
--   
--   <i>See:</i> <a>editors</a> smart constructor.
data Editors

-- | Creates a value of <a>Editors</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eGroups</a></li>
--   <li><a>eUsers</a></li>
--   <li><a>eDomainUsersCanEdit</a></li>
--   </ul>
editors :: Editors

-- | The email addresses of groups with edit access to the protected range.
eGroups :: Lens' Editors [Text]

-- | The email addresses of users with edit access to the protected range.
eUsers :: Lens' Editors [Text]

-- | 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)

-- | V1 error format.
data Xgafv

-- | <tt>1</tt> v1 error format
X1 :: Xgafv

-- | <tt>2</tt> v2 error format
X2 :: Xgafv

-- | A pivot table.
--   
--   <i>See:</i> <a>pivotTable</a> smart constructor.
data PivotTable

-- | Creates a value of <a>PivotTable</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptValues</a></li>
--   <li><a>ptValueLayout</a></li>
--   <li><a>ptRows</a></li>
--   <li><a>ptSource</a></li>
--   <li><a>ptColumns</a></li>
--   <li><a>ptCriteria</a></li>
--   </ul>
pivotTable :: PivotTable

-- | A list of values to include in the pivot table.
ptValues :: Lens' PivotTable [PivotValue]

-- | Whether values should be listed horizontally (as columns) or
--   vertically (as rows).
ptValueLayout :: Lens' PivotTable (Maybe PivotTableValueLayout)

-- | Each row grouping in the pivot table.
ptRows :: Lens' PivotTable [PivotGroup]

-- | The range the pivot table is reading data from.
ptSource :: Lens' PivotTable (Maybe GridRange)

-- | Each column grouping in the pivot table.
ptColumns :: Lens' PivotTable [PivotGroup]

-- | An optional mapping of filters per source column offset. The filters
--   will be applied before aggregating data into the pivot table. The
--   map's key is the column offset of the source range that you want to
--   filter, and the value is the criteria for that column. For example, if
--   the source was `C10:E15`, a key of `0` will have the filter for column
--   `C`, whereas the key `1` is for column `D`.
ptCriteria :: Lens' PivotTable (Maybe PivotTableCriteria)

-- | The position of an embedded object such as a chart.
--   
--   <i>See:</i> <a>embeddedObjectPosition</a> smart constructor.
data EmbeddedObjectPosition

-- | Creates a value of <a>EmbeddedObjectPosition</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eopOverlayPosition</a></li>
--   <li><a>eopSheetId</a></li>
--   <li><a>eopNewSheet</a></li>
--   </ul>
embeddedObjectPosition :: EmbeddedObjectPosition

-- | The position at which the object is overlaid on top of a grid.
eopOverlayPosition :: Lens' EmbeddedObjectPosition (Maybe OverlayPosition)

-- | 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)

-- | If true, the embedded object will be put on a new sheet whose ID is
--   chosen for you. Used only when writing.
eopNewSheet :: Lens' EmbeddedObjectPosition (Maybe Bool)

-- | The default filter associated with a sheet.
--   
--   <i>See:</i> <a>basicFilter</a> smart constructor.
data BasicFilter

-- | Creates a value of <a>BasicFilter</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bfSortSpecs</a></li>
--   <li><a>bfRange</a></li>
--   <li><a>bfCriteria</a></li>
--   </ul>
basicFilter :: BasicFilter

-- | The sort order per column. Later specifications are used when values
--   are equal in the earlier specifications.
bfSortSpecs :: Lens' BasicFilter [SortSpec]

-- | The range the filter covers.
bfRange :: Lens' BasicFilter (Maybe GridRange)

-- | 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)

-- | Splits a column of text into multiple columns, based on a delimiter in
--   each cell.
--   
--   <i>See:</i> <a>textToColumnsRequest</a> smart constructor.
data TextToColumnsRequest

-- | Creates a value of <a>TextToColumnsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ttcrDelimiterType</a></li>
--   <li><a>ttcrSource</a></li>
--   <li><a>ttcrDelimiter</a></li>
--   </ul>
textToColumnsRequest :: TextToColumnsRequest

-- | The delimiter type to use.
ttcrDelimiterType :: Lens' TextToColumnsRequest (Maybe TextToColumnsRequestDelimiterType)

-- | The source data range. This must span exactly one column.
ttcrSource :: Lens' TextToColumnsRequest (Maybe GridRange)

-- | The delimiter to use. Used only if delimiterType is CUSTOM.
ttcrDelimiter :: Lens' TextToColumnsRequest (Maybe Text)

-- | The amount of time to wait before volatile functions are recalculated.
data SpreadsheetPropertiesAutoRecalc

-- | <tt>RECALCULATION_INTERVAL_UNSPECIFIED</tt> Default value. This value
--   must not be used.
RecalculationIntervalUnspecified :: SpreadsheetPropertiesAutoRecalc

-- | <tt>ON_CHANGE</tt> Volatile functions are updated on every change.
OnChange :: SpreadsheetPropertiesAutoRecalc

-- | <tt>MINUTE</tt> Volatile functions are updated on every change and
--   every minute.
Minute :: SpreadsheetPropertiesAutoRecalc

-- | <tt>HOUR</tt> Volatile functions are updated on every change and
--   hourly.
Hour :: SpreadsheetPropertiesAutoRecalc

-- | How that data should be oriented when pasting.
data CopyPasteRequestPasteOrientation

-- | <tt>NORMAL</tt> Paste normally.
Normal :: CopyPasteRequestPasteOrientation

-- | <tt>TRANSPOSE</tt> Paste transposed, where all rows become columns and
--   vice versa.
Transpose :: CopyPasteRequestPasteOrientation

-- | The request for updating any aspect of a spreadsheet.
--   
--   <i>See:</i> <a>batchUpdateSpreadsheetRequest</a> smart constructor.
data BatchUpdateSpreadsheetRequest

-- | Creates a value of <a>BatchUpdateSpreadsheetRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>busrResponseIncludeGridData</a></li>
--   <li><a>busrResponseRanges</a></li>
--   <li><a>busrRequests</a></li>
--   <li><a>busrIncludeSpreadsheetInResponse</a></li>
--   </ul>
batchUpdateSpreadsheetRequest :: BatchUpdateSpreadsheetRequest

-- | True if grid data should be returned. Meaningful only if if
--   include_spreadsheet_response is 'true'. This parameter is ignored if a
--   field mask was set in the request.
busrResponseIncludeGridData :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)

-- | Limits the ranges included in the response spreadsheet. Meaningful
--   only if include_spreadsheet_response is 'true'.
busrResponseRanges :: Lens' BatchUpdateSpreadsheetRequest [Text]

-- | A list of updates to apply to the spreadsheet.
busrRequests :: Lens' BatchUpdateSpreadsheetRequest [Request']

-- | Determines if the update response should include the spreadsheet
--   resource.
busrIncludeSpreadsheetInResponse :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)

-- | How the data should be pasted.
data PasteDataRequestType

-- | <tt>PASTE_NORMAL</tt> Paste values, formulas, formats, and merges.
PDRTPasteNormal :: PasteDataRequestType

-- | <tt>PASTE_VALUES</tt> Paste the values ONLY without formats, formulas,
--   or merges.
PDRTPasteValues :: PasteDataRequestType

-- | <tt>PASTE_FORMAT</tt> Paste the format and data validation only.
PDRTPasteFormat :: PasteDataRequestType

-- | <tt>PASTE_NO_BORDERS</tt> Like PASTE_NORMAL but without borders.
PDRTPasteNoBOrders :: PasteDataRequestType

-- | <tt>PASTE_FORMULA</tt> Paste the formulas only.
PDRTPasteFormula :: PasteDataRequestType

-- | <tt>PASTE_DATA_VALIDATION</tt> Paste the data validation only.
PDRTPasteDataValidation :: PasteDataRequestType

-- | <tt>PASTE_CONDITIONAL_FORMATTING</tt> Paste the conditional formatting
--   rules only.
PDRTPasteConditionalFormatting :: PasteDataRequestType

-- | The response when updating a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>updateValuesResponse</a> smart constructor.
data UpdateValuesResponse

-- | Creates a value of <a>UpdateValuesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uvrUpdatedCells</a></li>
--   <li><a>uvrSpreadsheetId</a></li>
--   <li><a>uvrUpdatedRows</a></li>
--   <li><a>uvrUpdatedRange</a></li>
--   <li><a>uvrUpdatedData</a></li>
--   <li><a>uvrUpdatedColumns</a></li>
--   </ul>
updateValuesResponse :: UpdateValuesResponse

-- | The number of cells updated.
uvrUpdatedCells :: Lens' UpdateValuesResponse (Maybe Int32)

-- | The spreadsheet the updates were applied to.
uvrSpreadsheetId :: Lens' UpdateValuesResponse (Maybe Text)

-- | The number of rows where at least one cell in the row was updated.
uvrUpdatedRows :: Lens' UpdateValuesResponse (Maybe Int32)

-- | The range (in A1 notation) that updates were applied to.
uvrUpdatedRange :: Lens' UpdateValuesResponse (Maybe Text)

-- | 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)

-- | The number of columns where at least one cell in the column was
--   updated.
uvrUpdatedColumns :: Lens' UpdateValuesResponse (Maybe Int32)

-- | The request to copy a sheet across spreadsheets.
--   
--   <i>See:</i> <a>copySheetToAnotherSpreadsheetRequest</a> smart
--   constructor.
data CopySheetToAnotherSpreadsheetRequest

-- | Creates a value of <a>CopySheetToAnotherSpreadsheetRequest</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cstasrDestinationSpreadsheetId</a></li>
--   </ul>
copySheetToAnotherSpreadsheetRequest :: CopySheetToAnotherSpreadsheetRequest

-- | The ID of the spreadsheet to copy the sheet to.
cstasrDestinationSpreadsheetId :: Lens' CopySheetToAnotherSpreadsheetRequest (Maybe Text)

-- | Adds a filter view.
--   
--   <i>See:</i> <a>addFilterViewRequest</a> smart constructor.
data AddFilterViewRequest

-- | Creates a value of <a>AddFilterViewRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aFilter</a></li>
--   </ul>
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.)
aFilter :: Lens' AddFilterViewRequest (Maybe FilterView)

-- | Metadata about a value in a pivot grouping.
--   
--   <i>See:</i> <a>pivotGroupValueMetadata</a> smart constructor.
data PivotGroupValueMetadata

-- | Creates a value of <a>PivotGroupValueMetadata</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgvmValue</a></li>
--   <li><a>pgvmCollapsed</a></li>
--   </ul>
pivotGroupValueMetadata :: PivotGroupValueMetadata

-- | The calculated value the metadata corresponds to. (Note that
--   formulaValue is not valid, because the values will be calculated.)
pgvmValue :: Lens' PivotGroupValueMetadata (Maybe ExtendedValue)

-- | True if the data corresponding to the value is collapsed.
pgvmCollapsed :: Lens' PivotGroupValueMetadata (Maybe Bool)

-- | The direction of the text in the cell.
data CellFormatTextDirection

-- | <tt>TEXT_DIRECTION_UNSPECIFIED</tt> The text direction is not
--   specified. Do not use this.
TextDirectionUnspecified :: CellFormatTextDirection

-- | <tt>LEFT_TO_RIGHT</tt> The text direction of left-to-right was set by
--   the user.
LeftToRight :: CellFormatTextDirection

-- | <tt>RIGHT_TO_LEFT</tt> The text direction of right-to-left was set by
--   the user.
RightToLeft :: CellFormatTextDirection

-- | 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

-- | <tt>BASIC_CHART_TYPE_UNSPECIFIED</tt> Default value, do not use.
BCSTBasicChartTypeUnspecified :: BasicChartSeriesType

-- | <tt>BAR</tt> A <a>bar chart</a>.
BCSTBar :: BasicChartSeriesType

-- | <tt>LINE</tt> A <a>line chart</a>.
BCSTLine :: BasicChartSeriesType

-- | <tt>AREA</tt> An <a>area chart</a>.
BCSTArea :: BasicChartSeriesType

-- | <tt>COLUMN</tt> A <a>column chart</a>.
BCSTColumn :: BasicChartSeriesType

-- | <tt>SCATTER</tt> A <a>scatter chart</a>.
BCSTScatter :: BasicChartSeriesType

-- | <tt>COMBO</tt> A <a>combo chart</a>.
BCSTCombo :: BasicChartSeriesType

-- | Updates all cells in a range with new data.
--   
--   <i>See:</i> <a>updateCellsRequest</a> smart constructor.
data UpdateCellsRequest

-- | Creates a value of <a>UpdateCellsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>updStart</a></li>
--   <li><a>updRows</a></li>
--   <li><a>updRange</a></li>
--   <li><a>updFields</a></li>
--   </ul>
updateCellsRequest :: UpdateCellsRequest

-- | 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)

-- | The data to write.
updRows :: Lens' UpdateCellsRequest [RowData]

-- | 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)

-- | The fields of CellData that should be updated. At least one field must
--   be specified. The root is the CellData; 'row.values.' should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
updFields :: Lens' UpdateCellsRequest (Maybe FieldMask)

-- | The format of a cell.
--   
--   <i>See:</i> <a>cellFormat</a> smart constructor.
data CellFormat

-- | Creates a value of <a>CellFormat</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cfBOrders</a></li>
--   <li><a>cfVerticalAlignment</a></li>
--   <li><a>cfBackgRoundColor</a></li>
--   <li><a>cfHyperlinkDisplayType</a></li>
--   <li><a>cfWrapStrategy</a></li>
--   <li><a>cfNumberFormat</a></li>
--   <li><a>cfTextDirection</a></li>
--   <li><a>cfTextFormat</a></li>
--   <li><a>cfHorizontalAlignment</a></li>
--   <li><a>cfPadding</a></li>
--   </ul>
cellFormat :: CellFormat

-- | The borders of the cell.
cfBOrders :: Lens' CellFormat (Maybe BOrders)

-- | The vertical alignment of the value in the cell.
cfVerticalAlignment :: Lens' CellFormat (Maybe CellFormatVerticalAlignment)

-- | The background color of the cell.
cfBackgRoundColor :: Lens' CellFormat (Maybe Color)

-- | How a hyperlink, if it exists, should be displayed in the cell.
cfHyperlinkDisplayType :: Lens' CellFormat (Maybe CellFormatHyperlinkDisplayType)

-- | The wrap strategy for the value in the cell.
cfWrapStrategy :: Lens' CellFormat (Maybe CellFormatWrapStrategy)

-- | A format describing how number values should be represented to the
--   user.
cfNumberFormat :: Lens' CellFormat (Maybe NumberFormat)

-- | The direction of the text in the cell.
cfTextDirection :: Lens' CellFormat (Maybe CellFormatTextDirection)

-- | The format of the text in the cell (unless overridden by a format
--   run).
cfTextFormat :: Lens' CellFormat (Maybe TextFormat)

-- | The horizontal alignment of the value in the cell.
cfHorizontalAlignment :: Lens' CellFormat (Maybe CellFormatHorizontalAlignment)

-- | The padding of the cell.
cfPadding :: Lens' CellFormat (Maybe Padding)

-- | Deletes the protected range with the given ID.
--   
--   <i>See:</i> <a>deleteProtectedRangeRequest</a> smart constructor.
data DeleteProtectedRangeRequest

-- | Creates a value of <a>DeleteProtectedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dprrProtectedRangeId</a></li>
--   </ul>
deleteProtectedRangeRequest :: DeleteProtectedRangeRequest

-- | The ID of the protected range to delete.
dprrProtectedRangeId :: Lens' DeleteProtectedRangeRequest (Maybe Int32)

-- | Updates an existing protected range with the specified
--   protectedRangeId.
--   
--   <i>See:</i> <a>updateProtectedRangeRequest</a> smart constructor.
data UpdateProtectedRangeRequest

-- | Creates a value of <a>UpdateProtectedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uprrProtectedRange</a></li>
--   <li><a>uprrFields</a></li>
--   </ul>
updateProtectedRangeRequest :: UpdateProtectedRangeRequest

-- | The protected range to update with the new properties.
uprrProtectedRange :: Lens' UpdateProtectedRangeRequest (Maybe ProtectedRange)

-- | The fields that should be updated. At least one field must be
--   specified. The root `protectedRange` is implied and should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
uprrFields :: Lens' UpdateProtectedRangeRequest (Maybe FieldMask)

-- | The result of adding a sheet.
--   
--   <i>See:</i> <a>addSheetResponse</a> smart constructor.
data AddSheetResponse

-- | Creates a value of <a>AddSheetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aProperties</a></li>
--   </ul>
addSheetResponse :: AddSheetResponse

-- | The properties of the newly added sheet.
aProperties :: Lens' AddSheetResponse (Maybe SheetProperties)

-- | A protected range.
--   
--   <i>See:</i> <a>protectedRange</a> smart constructor.
data ProtectedRange

-- | Creates a value of <a>ProtectedRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prProtectedRangeId</a></li>
--   <li><a>prWarningOnly</a></li>
--   <li><a>prNamedRangeId</a></li>
--   <li><a>prRange</a></li>
--   <li><a>prEditors</a></li>
--   <li><a>prUnprotectedRanges</a></li>
--   <li><a>prRequestingUserCanEdit</a></li>
--   <li><a>prDescription</a></li>
--   </ul>
protectedRange :: ProtectedRange

-- | The ID of the protected range. This field is read-only.
prProtectedRangeId :: Lens' ProtectedRange (Maybe Int32)

-- | 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)

-- | 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)

-- | 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)

-- | 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)

-- | The list of unprotected ranges within a protected sheet. Unprotected
--   ranges are only supported on protected sheets.
prUnprotectedRanges :: Lens' ProtectedRange [GridRange]

-- | True if the user who requested this protected range can edit the
--   protected area. This field is read-only.
prRequestingUserCanEdit :: Lens' ProtectedRange (Maybe Bool)

-- | The description of this protected range.
prDescription :: Lens' ProtectedRange (Maybe Text)

-- | An axis of the chart. A chart may not have more than one axis per axis
--   position.
--   
--   <i>See:</i> <a>basicChartAxis</a> smart constructor.
data BasicChartAxis

-- | Creates a value of <a>BasicChartAxis</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcaFormat</a></li>
--   <li><a>bcaTitle</a></li>
--   <li><a>bcaPosition</a></li>
--   </ul>
basicChartAxis :: BasicChartAxis

-- | The format of the title. Only valid if the axis is not associated with
--   the domain.
bcaFormat :: Lens' BasicChartAxis (Maybe TextFormat)

-- | The title of this axis. If set, this overrides any title inferred from
--   headers of the data.
bcaTitle :: Lens' BasicChartAxis (Maybe Text)

-- | The position of this axis.
bcaPosition :: Lens' BasicChartAxis (Maybe BasicChartAxisPosition)

-- | Data in the grid, as well as metadata about the dimensions.
--   
--   <i>See:</i> <a>gridData</a> smart constructor.
data GridData

-- | Creates a value of <a>GridData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gdRowMetadata</a></li>
--   <li><a>gdStartRow</a></li>
--   <li><a>gdRowData</a></li>
--   <li><a>gdColumnMetadata</a></li>
--   <li><a>gdStartColumn</a></li>
--   </ul>
gridData :: GridData

-- | Metadata about the requested rows in the grid, starting with the row
--   in start_row.
gdRowMetadata :: Lens' GridData [DimensionProperties]

-- | The first row this GridData refers to, zero-based.
gdStartRow :: Lens' GridData (Maybe Int32)

-- | 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]

-- | Metadata about the requested columns in the grid, starting with the
--   column in start_column.
gdColumnMetadata :: Lens' GridData [DimensionProperties]

-- | The first column this GridData refers to, zero-based.
gdStartColumn :: Lens' GridData (Maybe Int32)

-- | The number format of a cell.
--   
--   <i>See:</i> <a>numberFormat</a> smart constructor.
data NumberFormat

-- | Creates a value of <a>NumberFormat</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nfPattern</a></li>
--   <li><a>nfType</a></li>
--   </ul>
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 <a>Date and Number Formats guide</a> for more
--   information about the supported patterns.
nfPattern :: Lens' NumberFormat (Maybe Text)

-- | The type of the number format. When writing, this field must be set.
nfType :: Lens' NumberFormat (Maybe NumberFormatType)

-- | The reply for batch updating a spreadsheet.
--   
--   <i>See:</i> <a>batchUpdateSpreadsheetResponse</a> smart constructor.
data BatchUpdateSpreadsheetResponse

-- | Creates a value of <a>BatchUpdateSpreadsheetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>busrSpreadsheetId</a></li>
--   <li><a>busrReplies</a></li>
--   <li><a>busrUpdatedSpreadsheet</a></li>
--   </ul>
batchUpdateSpreadsheetResponse :: BatchUpdateSpreadsheetResponse

-- | The spreadsheet the updates were applied to.
busrSpreadsheetId :: Lens' BatchUpdateSpreadsheetResponse (Maybe Text)

-- | The reply of the updates. This maps 1:1 with the updates, although
--   replies to some requests may be empty.
busrReplies :: Lens' BatchUpdateSpreadsheetResponse [Response]

-- | The spreadsheet after updates were applied. This is only set if
--   [BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is
--   `true`.
busrUpdatedSpreadsheet :: Lens' BatchUpdateSpreadsheetResponse (Maybe Spreadsheet)

-- | Sets a data validation rule to every cell in the range. To clear
--   validation in a range, call this with no rule specified.
--   
--   <i>See:</i> <a>setDataValidationRequest</a> smart constructor.
data SetDataValidationRequest

-- | Creates a value of <a>SetDataValidationRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sdvrRule</a></li>
--   <li><a>sdvrRange</a></li>
--   </ul>
setDataValidationRequest :: SetDataValidationRequest

-- | 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)

-- | The range the data validation rule should apply to.
sdvrRange :: Lens' SetDataValidationRequest (Maybe GridRange)

-- | 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.
--   
--   <i>See:</i> <a>bandingProperties</a> smart constructor.
data BandingProperties

-- | Creates a value of <a>BandingProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bpSecondBandColor</a></li>
--   <li><a>bpHeaderColor</a></li>
--   <li><a>bpFooterColor</a></li>
--   <li><a>bpFirstBandColor</a></li>
--   </ul>
bandingProperties :: BandingProperties

-- | The second color that is alternating. (Required)
bpSecondBandColor :: Lens' BandingProperties (Maybe Color)

-- | 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)

-- | 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)

-- | The first color that is alternating. (Required)
bpFirstBandColor :: Lens' BandingProperties (Maybe Color)

-- | Determines how the charts will use hidden rows or columns.
data ChartSpecHiddenDimensionStrategy

-- | <tt>CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED</tt> Default value, do
--   not use.
ChartHiddenDimensionStrategyUnspecified :: ChartSpecHiddenDimensionStrategy

-- | <tt>SKIP_HIDDEN_ROWS_AND_COLUMNS</tt> Charts will skip hidden rows and
--   columns.
SkipHiddenRowsAndColumns :: ChartSpecHiddenDimensionStrategy

-- | <tt>SKIP_HIDDEN_ROWS</tt> Charts will skip hidden rows only.
SkipHiddenRows :: ChartSpecHiddenDimensionStrategy

-- | <tt>SKIP_HIDDEN_COLUMNS</tt> Charts will skip hidden columns only.
SkipHiddenColumns :: ChartSpecHiddenDimensionStrategy

-- | <tt>SHOW_ALL</tt> Charts will not skip any hidden rows or columns.
ShowAll :: ChartSpecHiddenDimensionStrategy

-- | Duplicates a particular filter view.
--   
--   <i>See:</i> <a>duplicateFilterViewRequest</a> smart constructor.
data DuplicateFilterViewRequest

-- | Creates a value of <a>DuplicateFilterViewRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dFilterId</a></li>
--   </ul>
duplicateFilterViewRequest :: DuplicateFilterViewRequest

-- | The ID of the filter being duplicated.
dFilterId :: Lens' DuplicateFilterViewRequest (Maybe Int32)

-- | The style of the border.
data BOrderStyle

-- | <tt>STYLE_UNSPECIFIED</tt> The style is not specified. Do not use
--   this.
StyleUnspecified :: BOrderStyle

-- | <tt>DOTTED</tt> The border is dotted.
Dotted :: BOrderStyle

-- | <tt>DASHED</tt> The border is dashed.
Dashed :: BOrderStyle

-- | <tt>SOLID</tt> The border is a thin solid line.
Solid :: BOrderStyle

-- | <tt>SOLID_MEDIUM</tt> The border is a medium solid line.
SolidMedium :: BOrderStyle

-- | <tt>SOLID_THICK</tt> The border is a thick solid line.
SolidThick :: BOrderStyle

-- | <tt>NONE</tt> No border. Used only when updating a border in order to
--   erase it.
None :: BOrderStyle

-- | <tt>DOUBLE</tt> The border is two solid lines.
Double :: BOrderStyle

-- | A single grouping (either row or column) in a pivot table.
--   
--   <i>See:</i> <a>pivotGroup</a> smart constructor.
data PivotGroup

-- | Creates a value of <a>PivotGroup</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgValueMetadata</a></li>
--   <li><a>pgSourceColumnOffSet</a></li>
--   <li><a>pgSortOrder</a></li>
--   <li><a>pgShowTotals</a></li>
--   <li><a>pgValueBucket</a></li>
--   </ul>
pivotGroup :: PivotGroup

-- | Metadata about values in the grouping.
pgValueMetadata :: Lens' PivotGroup [PivotGroupValueMetadata]

-- | 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)

-- | The order the values in this group should be sorted.
pgSortOrder :: Lens' PivotGroup (Maybe PivotGroupSortOrder)

-- | True if the pivot table should include the totals for this grouping.
pgShowTotals :: Lens' PivotGroup (Maybe Bool)

-- | 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)

-- | The result of adding a banded range.
--   
--   <i>See:</i> <a>addBandingResponse</a> smart constructor.
data AddBandingResponse

-- | Creates a value of <a>AddBandingResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aBandedRange</a></li>
--   </ul>
addBandingResponse :: AddBandingResponse

-- | The banded range that was added.
aBandedRange :: Lens' AddBandingResponse (Maybe BandedRange)

-- | What kind of data to paste. All the source data will be cut,
--   regardless of what is pasted.
data CutPasteRequestPasteType

-- | <tt>PASTE_NORMAL</tt> Paste values, formulas, formats, and merges.
CPRPTPasteNormal :: CutPasteRequestPasteType

-- | <tt>PASTE_VALUES</tt> Paste the values ONLY without formats, formulas,
--   or merges.
CPRPTPasteValues :: CutPasteRequestPasteType

-- | <tt>PASTE_FORMAT</tt> Paste the format and data validation only.
CPRPTPasteFormat :: CutPasteRequestPasteType

-- | <tt>PASTE_NO_BORDERS</tt> Like PASTE_NORMAL but without borders.
CPRPTPasteNoBOrders :: CutPasteRequestPasteType

-- | <tt>PASTE_FORMULA</tt> Paste the formulas only.
CPRPTPasteFormula :: CutPasteRequestPasteType

-- | <tt>PASTE_DATA_VALIDATION</tt> Paste the data validation only.
CPRPTPasteDataValidation :: CutPasteRequestPasteType

-- | <tt>PASTE_CONDITIONAL_FORMATTING</tt> Paste the conditional formatting
--   rules only.
CPRPTPasteConditionalFormatting :: CutPasteRequestPasteType

-- | The position of the chart legend.
data BasicChartSpecLegendPosition

-- | <tt>BASIC_CHART_LEGEND_POSITION_UNSPECIFIED</tt> Default value, do not
--   use.
BCSLPBasicChartLegendPositionUnspecified :: BasicChartSpecLegendPosition

-- | <tt>BOTTOM_LEGEND</tt> The legend is rendered on the bottom of the
--   chart.
BCSLPBottomLegend :: BasicChartSpecLegendPosition

-- | <tt>LEFT_LEGEND</tt> The legend is rendered on the left of the chart.
BCSLPLeftLegend :: BasicChartSpecLegendPosition

-- | <tt>RIGHT_LEGEND</tt> The legend is rendered on the right of the
--   chart.
BCSLPRightLegend :: BasicChartSpecLegendPosition

-- | <tt>TOP_LEGEND</tt> The legend is rendered on the top of the chart.
BCSLPTopLegend :: BasicChartSpecLegendPosition

-- | <tt>NO_LEGEND</tt> No legend is rendered.
BCSLPNoLegend :: BasicChartSpecLegendPosition

-- | The type of error.
data ErrorValueType

-- | <tt>ERROR_TYPE_UNSPECIFIED</tt> The default error type, do not use
--   this.
ErrorTypeUnspecified :: ErrorValueType

-- | <tt>ERROR</tt> Corresponds to the `#ERROR!` error.
Error' :: ErrorValueType

-- | <tt>NULL_VALUE</tt> Corresponds to the `#NULL!` error.
NullValue :: ErrorValueType

-- | <tt>DIVIDE_BY_ZERO</tt> Corresponds to the `#DIV/0` error.
DivideByZero :: ErrorValueType

-- | <tt>VALUE</tt> Corresponds to the `#VALUE!` error.
Value :: ErrorValueType

-- | <tt>REF</tt> Corresponds to the `#REF!` error.
Ref :: ErrorValueType

-- | <tt>NAME</tt> Corresponds to the `#NAME?` error.
Name :: ErrorValueType

-- | <tt>NUM</tt> Corresponds to the `#NUM`! error.
Num :: ErrorValueType

-- | <tt>N_A</tt> Corresponds to the `#N/A` error.
NA :: ErrorValueType

-- | <tt>LOADING</tt> Corresponds to the `Loading...` state.
Loading :: ErrorValueType

-- | A rule describing a conditional format.
--   
--   <i>See:</i> <a>conditionalFormatRule</a> smart constructor.
data ConditionalFormatRule

-- | Creates a value of <a>ConditionalFormatRule</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cfrBooleanRule</a></li>
--   <li><a>cfrGradientRule</a></li>
--   <li><a>cfrRanges</a></li>
--   </ul>
conditionalFormatRule :: ConditionalFormatRule

-- | The formatting is either "on" or "off" according to the rule.
cfrBooleanRule :: Lens' ConditionalFormatRule (Maybe BooleanRule)

-- | The formatting will vary based on the gradients in the rule.
cfrGradientRule :: Lens' ConditionalFormatRule (Maybe GradientRule)

-- | The ranges that will be formatted if the condition is true. All the
--   ranges must be on the same grid.
cfrRanges :: Lens' ConditionalFormatRule [GridRange]

-- | The specification for a basic chart. See BasicChartType for the list
--   of charts this supports.
--   
--   <i>See:</i> <a>basicChartSpec</a> smart constructor.
data BasicChartSpec

-- | Creates a value of <a>BasicChartSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bHeaderCount</a></li>
--   <li><a>bLegendPosition</a></li>
--   <li><a>bSeries</a></li>
--   <li><a>bChartType</a></li>
--   <li><a>bDomains</a></li>
--   <li><a>bAxis</a></li>
--   </ul>
basicChartSpec :: BasicChartSpec

-- | The number of rows or columns in the data that are "headers". If not
--   set, Google Sheets will guess how many rows are headers based on the
--   data. (Note that BasicChartAxis.title may override the axis title
--   inferred from the header values.)
bHeaderCount :: Lens' BasicChartSpec (Maybe Int32)

-- | The position of the chart legend.
bLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)

-- | The data this chart is visualizing.
bSeries :: Lens' BasicChartSpec [BasicChartSeries]

-- | The type of the chart.
bChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)

-- | The domain of data this is charting. Only a single domain is currently
--   supported.
bDomains :: Lens' BasicChartSpec [BasicChartDomain]

-- | The axis on the chart.
bAxis :: Lens' BasicChartSpec [BasicChartAxis]

-- | Adds a new conditional format rule at the given index. All subsequent
--   rules' indexes are incremented.
--   
--   <i>See:</i> <a>addConditionalFormatRuleRequest</a> smart constructor.
data AddConditionalFormatRuleRequest

-- | Creates a value of <a>AddConditionalFormatRuleRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acfrrRule</a></li>
--   <li><a>acfrrIndex</a></li>
--   </ul>
addConditionalFormatRuleRequest :: AddConditionalFormatRuleRequest

-- | The rule to add.
acfrrRule :: Lens' AddConditionalFormatRuleRequest (Maybe ConditionalFormatRule)

-- | The zero-based index where the rule should be inserted.
acfrrIndex :: Lens' AddConditionalFormatRuleRequest (Maybe Int32)

-- | Whether values should be listed horizontally (as columns) or
--   vertically (as rows).
data PivotTableValueLayout

-- | <tt>HORIZONTAL</tt> Values are laid out horizontally (as columns).
Horizontal :: PivotTableValueLayout

-- | <tt>VERTICAL</tt> Values are laid out vertically (as rows).
Vertical :: PivotTableValueLayout

-- | The result of duplicating a sheet.
--   
--   <i>See:</i> <a>duplicateSheetResponse</a> smart constructor.
data DuplicateSheetResponse

-- | Creates a value of <a>DuplicateSheetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrProperties</a></li>
--   </ul>
duplicateSheetResponse :: DuplicateSheetResponse

-- | The properties of the duplicate sheet.
dsrProperties :: Lens' DuplicateSheetResponse (Maybe SheetProperties)

-- | The format of a run of text in a cell. Absent values indicate that the
--   field isn't specified.
--   
--   <i>See:</i> <a>textFormat</a> smart constructor.
data TextFormat

-- | Creates a value of <a>TextFormat</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tfFontFamily</a></li>
--   <li><a>tfForegRoundColor</a></li>
--   <li><a>tfFontSize</a></li>
--   <li><a>tfUnderline</a></li>
--   <li><a>tfItalic</a></li>
--   <li><a>tfBold</a></li>
--   <li><a>tfStrikethrough</a></li>
--   </ul>
textFormat :: TextFormat

-- | The font family.
tfFontFamily :: Lens' TextFormat (Maybe Text)

-- | The foreground color of the text.
tfForegRoundColor :: Lens' TextFormat (Maybe Color)

-- | The size of the font.
tfFontSize :: Lens' TextFormat (Maybe Int32)

-- | True if the text is underlined.
tfUnderline :: Lens' TextFormat (Maybe Bool)

-- | True if the text is italicized.
tfItalic :: Lens' TextFormat (Maybe Bool)

-- | True if the text is bold.
tfBold :: Lens' TextFormat (Maybe Bool)

-- | True if the text has a strikethrough.
tfStrikethrough :: Lens' TextFormat (Maybe Bool)

-- | The response when updating a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>batchClearValuesResponse</a> smart constructor.
data BatchClearValuesResponse

-- | Creates a value of <a>BatchClearValuesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcvrClearedRanges</a></li>
--   <li><a>bcvrSpreadsheetId</a></li>
--   </ul>
batchClearValuesResponse :: BatchClearValuesResponse

-- | 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]

-- | The spreadsheet the updates were applied to.
bcvrSpreadsheetId :: Lens' BatchClearValuesResponse (Maybe Text)

-- | The domain of a chart. For example, if charting stock prices over
--   time, this would be the date.
--   
--   <i>See:</i> <a>basicChartDomain</a> smart constructor.
data BasicChartDomain

-- | Creates a value of <a>BasicChartDomain</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcdDomain</a></li>
--   </ul>
basicChartDomain :: BasicChartDomain

-- | 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)

-- | How the value should be interpreted.
data InterpolationPointType

-- | <tt>INTERPOLATION_POINT_TYPE_UNSPECIFIED</tt> The default value, do
--   not use.
IPTInterpolationPointTypeUnspecified :: InterpolationPointType

-- | <tt>MIN</tt> The interpolation point will use the minimum value in the
--   cells over the range of the conditional format.
IPTMin :: InterpolationPointType

-- | <tt>MAX</tt> The interpolation point will use the maximum value in the
--   cells over the range of the conditional format.
IPTMax :: InterpolationPointType

-- | <tt>NUMBER</tt> The interpolation point will use exactly the value in
--   InterpolationPoint.value.
IPTNumber :: InterpolationPointType

-- | <tt>PERCENT</tt> The interpolation point will be the given percentage
--   over all the cells in the range of the conditional format. This is
--   equivalent to NUMBER if the value was: `=(MAX(FLATTEN(range)) * (value
--   / 100)) + (MIN(FLATTEN(range)) * (1 - (value / 100)))` (where errors
--   in the range are ignored when flattening).
IPTPercent :: InterpolationPointType

-- | <tt>PERCENTILE</tt> The interpolation point will be the given
--   percentile over all the cells in the range of the conditional format.
--   This is equivalent to NUMBER if the value was:
--   `=PERCENTILE(FLATTEN(range), value / 100)` (where errors in the range
--   are ignored when flattening).
IPTPercentile :: InterpolationPointType

-- | The delimiter type to use.
data TextToColumnsRequestDelimiterType

-- | <tt>DELIMITER_TYPE_UNSPECIFIED</tt> Default value. This value must not
--   be used.
TTCRDTDelimiterTypeUnspecified :: TextToColumnsRequestDelimiterType

-- | <tt>COMMA</tt> ","
TTCRDTComma :: TextToColumnsRequestDelimiterType

-- | <tt>SEMICOLON</tt> ";"
TTCRDTSemicolon :: TextToColumnsRequestDelimiterType

-- | <tt>PERIOD</tt> "."
TTCRDTPeriod :: TextToColumnsRequestDelimiterType

-- | <tt>SPACE</tt> " "
TTCRDTSpace :: TextToColumnsRequestDelimiterType

-- | <tt>CUSTOM</tt> A custom value as defined in delimiter.
TTCRDTCustom :: TextToColumnsRequestDelimiterType

-- | Inserts cells into a range, shifting the existing cells over or down.
--   
--   <i>See:</i> <a>insertRangeRequest</a> smart constructor.
data InsertRangeRequest

-- | Creates a value of <a>InsertRangeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irrShiftDimension</a></li>
--   <li><a>irrRange</a></li>
--   </ul>
insertRangeRequest :: InsertRangeRequest

-- | 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)

-- | The range to insert new cells into.
irrRange :: Lens' InsertRangeRequest (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.
data InsertRangeRequestShiftDimension

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
IRRSDDimensionUnspecified :: InsertRangeRequestShiftDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
IRRSDRows :: InsertRangeRequestShiftDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
IRRSDColumns :: InsertRangeRequestShiftDimension

-- | The amount of padding around the cell, in pixels. When updating
--   padding, every field must be specified.
--   
--   <i>See:</i> <a>padding</a> smart constructor.
data Padding

-- | Creates a value of <a>Padding</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pBottom</a></li>
--   <li><a>pLeft</a></li>
--   <li><a>pRight</a></li>
--   <li><a>pTop</a></li>
--   </ul>
padding :: Padding

-- | The bottom padding of the cell.
pBottom :: Lens' Padding (Maybe Int32)

-- | The left padding of the cell.
pLeft :: Lens' Padding (Maybe Int32)

-- | The right padding of the cell.
pRight :: Lens' Padding (Maybe Int32)

-- | The top padding of the cell.
pTop :: Lens' Padding (Maybe Int32)

-- | The specifications of a chart.
--   
--   <i>See:</i> <a>chartSpec</a> smart constructor.
data ChartSpec

-- | Creates a value of <a>ChartSpec</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csTitle</a></li>
--   <li><a>csPieChart</a></li>
--   <li><a>csBasicChart</a></li>
--   <li><a>csHiddenDimensionStrategy</a></li>
--   </ul>
chartSpec :: ChartSpec

-- | The title of the chart.
csTitle :: Lens' ChartSpec (Maybe Text)

-- | A pie chart specification.
csPieChart :: Lens' ChartSpec (Maybe PieChartSpec)

-- | 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)

-- | Determines how the charts will use hidden rows or columns.
csHiddenDimensionStrategy :: Lens' ChartSpec (Maybe ChartSpecHiddenDimensionStrategy)

-- | Properties about a dimension.
--   
--   <i>See:</i> <a>dimensionProperties</a> smart constructor.
data DimensionProperties

-- | Creates a value of <a>DimensionProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpHiddenByFilter</a></li>
--   <li><a>dpPixelSize</a></li>
--   <li><a>dpHiddenByUser</a></li>
--   </ul>
dimensionProperties :: DimensionProperties

-- | True if this dimension is being filtered. This field is read-only.
dpHiddenByFilter :: Lens' DimensionProperties (Maybe Bool)

-- | The height (if a row) or width (if a column) of the dimension in
--   pixels.
dpPixelSize :: Lens' DimensionProperties (Maybe Int32)

-- | True if this dimension is explicitly hidden.
dpHiddenByUser :: Lens' DimensionProperties (Maybe Bool)

-- | Updates properties of the supplied banded range.
--   
--   <i>See:</i> <a>updateBandingRequest</a> smart constructor.
data UpdateBandingRequest

-- | Creates a value of <a>UpdateBandingRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ubrBandedRange</a></li>
--   <li><a>ubrFields</a></li>
--   </ul>
updateBandingRequest :: UpdateBandingRequest

-- | The banded range to update with the new properties.
ubrBandedRange :: Lens' UpdateBandingRequest (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.
ubrFields :: Lens' UpdateBandingRequest (Maybe FieldMask)

-- | The response when retrieving more than one range of values in a
--   spreadsheet.
--   
--   <i>See:</i> <a>batchGetValuesResponse</a> smart constructor.
data BatchGetValuesResponse

-- | Creates a value of <a>BatchGetValuesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bgvrSpreadsheetId</a></li>
--   <li><a>bgvrValueRanges</a></li>
--   </ul>
batchGetValuesResponse :: BatchGetValuesResponse

-- | The ID of the spreadsheet the data was retrieved from.
bgvrSpreadsheetId :: Lens' BatchGetValuesResponse (Maybe Text)

-- | The requested values. The order of the ValueRanges is the same as the
--   order of the requested ranges.
bgvrValueRanges :: Lens' BatchGetValuesResponse [ValueRange]

-- | Removes the banded range with the given ID from the spreadsheet.
--   
--   <i>See:</i> <a>deleteBandingRequest</a> smart constructor.
data DeleteBandingRequest

-- | Creates a value of <a>DeleteBandingRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dbrBandedRangeId</a></li>
--   </ul>
deleteBandingRequest :: DeleteBandingRequest

-- | The ID of the banded range to delete.
dbrBandedRangeId :: Lens' DeleteBandingRequest (Maybe Int32)

-- | A single kind of update to apply to a spreadsheet.
--   
--   <i>See:</i> <a>request'</a> smart constructor.
data Request'

-- | Creates a value of <a>Request</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>reqAddFilterView</a></li>
--   <li><a>reqDeleteProtectedRange</a></li>
--   <li><a>reqUpdateProtectedRange</a></li>
--   <li><a>reqUpdateCells</a></li>
--   <li><a>reqDuplicateFilterView</a></li>
--   <li><a>reqAddConditionalFormatRule</a></li>
--   <li><a>reqSortRange</a></li>
--   <li><a>reqUpdateNamedRange</a></li>
--   <li><a>reqDeleteNamedRange</a></li>
--   <li><a>reqInsertRange</a></li>
--   <li><a>reqDeleteBanding</a></li>
--   <li><a>reqUpdateBanding</a></li>
--   <li><a>reqClearBasicFilter</a></li>
--   <li><a>reqAppendCells</a></li>
--   <li><a>reqPasteData</a></li>
--   <li><a>reqUpdateEmbeddedObjectPosition</a></li>
--   <li><a>reqDeleteRange</a></li>
--   <li><a>reqCopyPaste</a></li>
--   <li><a>reqAutoResizeDimensions</a></li>
--   <li><a>reqAddSheet</a></li>
--   <li><a>reqFindReplace</a></li>
--   <li><a>reqDeleteDimension</a></li>
--   <li><a>reqCutPaste</a></li>
--   <li><a>reqMoveDimension</a></li>
--   <li><a>reqRepeatCell</a></li>
--   <li><a>reqAddProtectedRange</a></li>
--   <li><a>reqUpdateFilterView</a></li>
--   <li><a>reqDeleteFilterView</a></li>
--   <li><a>reqInsertDimension</a></li>
--   <li><a>reqUpdateSheetProperties</a></li>
--   <li><a>reqDeleteConditionalFormatRule</a></li>
--   <li><a>reqUpdateConditionalFormatRule</a></li>
--   <li><a>reqDeleteEmbeddedObject</a></li>
--   <li><a>reqMergeCells</a></li>
--   <li><a>reqAddNamedRange</a></li>
--   <li><a>reqAddChart</a></li>
--   <li><a>reqAddBanding</a></li>
--   <li><a>reqDuplicateSheet</a></li>
--   <li><a>reqAutoFill</a></li>
--   <li><a>reqUpdateDimensionProperties</a></li>
--   <li><a>reqUpdateChartSpec</a></li>
--   <li><a>reqSetBasicFilter</a></li>
--   <li><a>reqTextToColumns</a></li>
--   <li><a>reqUpdateSpreadsheetProperties</a></li>
--   <li><a>reqDeleteSheet</a></li>
--   <li><a>reqUnmergeCells</a></li>
--   <li><a>reqUpdateBOrders</a></li>
--   <li><a>reqAppendDimension</a></li>
--   <li><a>reqSetDataValidation</a></li>
--   </ul>
request' :: Request'

-- | Adds a filter view.
reqAddFilterView :: Lens' Request' (Maybe AddFilterViewRequest)

-- | Deletes a protected range.
reqDeleteProtectedRange :: Lens' Request' (Maybe DeleteProtectedRangeRequest)

-- | Updates a protected range.
reqUpdateProtectedRange :: Lens' Request' (Maybe UpdateProtectedRangeRequest)

-- | Updates many cells at once.
reqUpdateCells :: Lens' Request' (Maybe UpdateCellsRequest)

-- | Duplicates a filter view.
reqDuplicateFilterView :: Lens' Request' (Maybe DuplicateFilterViewRequest)

-- | Adds a new conditional format rule.
reqAddConditionalFormatRule :: Lens' Request' (Maybe AddConditionalFormatRuleRequest)

-- | Sorts data in a range.
reqSortRange :: Lens' Request' (Maybe SortRangeRequest)

-- | Updates a named range.
reqUpdateNamedRange :: Lens' Request' (Maybe UpdateNamedRangeRequest)

-- | Deletes a named range.
reqDeleteNamedRange :: Lens' Request' (Maybe DeleteNamedRangeRequest)

-- | Inserts new cells in a sheet, shifting the existing cells.
reqInsertRange :: Lens' Request' (Maybe InsertRangeRequest)

-- | Removes a banded range
reqDeleteBanding :: Lens' Request' (Maybe DeleteBandingRequest)

-- | Updates a banded range
reqUpdateBanding :: Lens' Request' (Maybe UpdateBandingRequest)

-- | Clears the basic filter on a sheet.
reqClearBasicFilter :: Lens' Request' (Maybe ClearBasicFilterRequest)

-- | Appends cells after the last row with data in a sheet.
reqAppendCells :: Lens' Request' (Maybe AppendCellsRequest)

-- | Pastes data (HTML or delimited) into a sheet.
reqPasteData :: Lens' Request' (Maybe PasteDataRequest)

-- | Updates an embedded object's (e.g. chart, image) position.
reqUpdateEmbeddedObjectPosition :: Lens' Request' (Maybe UpdateEmbeddedObjectPositionRequest)

-- | Deletes a range of cells from a sheet, shifting the remaining cells.
reqDeleteRange :: Lens' Request' (Maybe DeleteRangeRequest)

-- | Copies data from one area and pastes it to another.
reqCopyPaste :: Lens' Request' (Maybe CopyPasteRequest)

-- | Automatically resizes one or more dimensions based on the contents of
--   the cells in that dimension.
reqAutoResizeDimensions :: Lens' Request' (Maybe AutoResizeDimensionsRequest)

-- | Adds a sheet.
reqAddSheet :: Lens' Request' (Maybe AddSheetRequest)

-- | Finds and replaces occurrences of some text with other text.
reqFindReplace :: Lens' Request' (Maybe FindReplaceRequest)

-- | Deletes rows or columns in a sheet.
reqDeleteDimension :: Lens' Request' (Maybe DeleteDimensionRequest)

-- | Cuts data from one area and pastes it to another.
reqCutPaste :: Lens' Request' (Maybe CutPasteRequest)

-- | Moves rows or columns to another location in a sheet.
reqMoveDimension :: Lens' Request' (Maybe MoveDimensionRequest)

-- | Repeats a single cell across a range.
reqRepeatCell :: Lens' Request' (Maybe RepeatCellRequest)

-- | Adds a protected range.
reqAddProtectedRange :: Lens' Request' (Maybe AddProtectedRangeRequest)

-- | Updates the properties of a filter view.
reqUpdateFilterView :: Lens' Request' (Maybe UpdateFilterViewRequest)

-- | Deletes a filter view from a sheet.
reqDeleteFilterView :: Lens' Request' (Maybe DeleteFilterViewRequest)

-- | Inserts new rows or columns in a sheet.
reqInsertDimension :: Lens' Request' (Maybe InsertDimensionRequest)

-- | Updates a sheet's properties.
reqUpdateSheetProperties :: Lens' Request' (Maybe UpdateSheetPropertiesRequest)

-- | Deletes an existing conditional format rule.
reqDeleteConditionalFormatRule :: Lens' Request' (Maybe DeleteConditionalFormatRuleRequest)

-- | Updates an existing conditional format rule.
reqUpdateConditionalFormatRule :: Lens' Request' (Maybe UpdateConditionalFormatRuleRequest)

-- | Deletes an embedded object (e.g, chart, image) in a sheet.
reqDeleteEmbeddedObject :: Lens' Request' (Maybe DeleteEmbeddedObjectRequest)

-- | Merges cells together.
reqMergeCells :: Lens' Request' (Maybe MergeCellsRequest)

-- | Adds a named range.
reqAddNamedRange :: Lens' Request' (Maybe AddNamedRangeRequest)

-- | Adds a chart.
reqAddChart :: Lens' Request' (Maybe AddChartRequest)

-- | Adds a new banded range
reqAddBanding :: Lens' Request' (Maybe AddBandingRequest)

-- | Duplicates a sheet.
reqDuplicateSheet :: Lens' Request' (Maybe DuplicateSheetRequest)

-- | Automatically fills in more data based on existing data.
reqAutoFill :: Lens' Request' (Maybe AutoFillRequest)

-- | Updates dimensions' properties.
reqUpdateDimensionProperties :: Lens' Request' (Maybe UpdateDimensionPropertiesRequest)

-- | Updates a chart's specifications.
reqUpdateChartSpec :: Lens' Request' (Maybe UpdateChartSpecRequest)

-- | Sets the basic filter on a sheet.
reqSetBasicFilter :: Lens' Request' (Maybe SetBasicFilterRequest)

-- | Converts a column of text into many columns of text.
reqTextToColumns :: Lens' Request' (Maybe TextToColumnsRequest)

-- | Updates the spreadsheet's properties.
reqUpdateSpreadsheetProperties :: Lens' Request' (Maybe UpdateSpreadsheetPropertiesRequest)

-- | Deletes a sheet.
reqDeleteSheet :: Lens' Request' (Maybe DeleteSheetRequest)

-- | Unmerges merged cells.
reqUnmergeCells :: Lens' Request' (Maybe UnmergeCellsRequest)

-- | Updates the borders in a range of cells.
reqUpdateBOrders :: Lens' Request' (Maybe UpdateBOrdersRequest)

-- | Appends dimensions to the end of a sheet.
reqAppendDimension :: Lens' Request' (Maybe AppendDimensionRequest)

-- | Sets data validation for one or more cells.
reqSetDataValidation :: Lens' Request' (Maybe SetDataValidationRequest)

-- | The result of deleting a conditional format rule.
--   
--   <i>See:</i> <a>deleteConditionalFormatRuleResponse</a> smart
--   constructor.
data DeleteConditionalFormatRuleResponse

-- | Creates a value of <a>DeleteConditionalFormatRuleResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcfrrRule</a></li>
--   </ul>
deleteConditionalFormatRuleResponse :: DeleteConditionalFormatRuleResponse

-- | The rule that was deleted.
dcfrrRule :: Lens' DeleteConditionalFormatRuleResponse (Maybe ConditionalFormatRule)

-- | The result of updating a conditional format rule.
--   
--   <i>See:</i> <a>updateConditionalFormatRuleResponse</a> smart
--   constructor.
data UpdateConditionalFormatRuleResponse

-- | Creates a value of <a>UpdateConditionalFormatRuleResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uNewRule</a></li>
--   <li><a>uNewIndex</a></li>
--   <li><a>uOldIndex</a></li>
--   <li><a>uOldRule</a></li>
--   </ul>
updateConditionalFormatRuleResponse :: UpdateConditionalFormatRuleResponse

-- | The new rule that replaced the old rule (if replacing), or the rule
--   that was moved (if moved)
uNewRule :: Lens' UpdateConditionalFormatRuleResponse (Maybe ConditionalFormatRule)

-- | The index of the new rule.
uNewIndex :: Lens' UpdateConditionalFormatRuleResponse (Maybe Int32)

-- | 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)

-- | The old (deleted) rule. Not set if a rule was moved (because it is the
--   same as new_rule).
uOldRule :: Lens' UpdateConditionalFormatRuleResponse (Maybe ConditionalFormatRule)


-- | Sets values in a range of a spreadsheet. The caller must specify the
--   spreadsheet ID, range, and a valueInputOption.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.values.update</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Values.Update

-- | A resource alias for <tt>sheets.spreadsheets.values.update</tt> method
--   which the <a>SpreadsheetsValuesUpdate</a> request conforms to.
type SpreadsheetsValuesUpdateResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values" :> (Capture "range" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "valueInputOption" Text :> (QueryParam "bearer_token" Text :> (QueryParam "includeValuesInResponse" Bool :> (QueryParam "responseDateTimeRenderOption" Text :> (QueryParam "callback" Text :> (QueryParam "responseValueRenderOption" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ValueRange :> Put '[JSON] UpdateValuesResponse)))))))))))))))))

-- | Creates a value of <a>SpreadsheetsValuesUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>svuXgafv</a></li>
--   <li><a>svuUploadProtocol</a></li>
--   <li><a>svuPp</a></li>
--   <li><a>svuAccessToken</a></li>
--   <li><a>svuSpreadsheetId</a></li>
--   <li><a>svuUploadType</a></li>
--   <li><a>svuValueInputOption</a></li>
--   <li><a>svuPayload</a></li>
--   <li><a>svuBearerToken</a></li>
--   <li><a>svuRange</a></li>
--   <li><a>svuIncludeValuesInResponse</a></li>
--   <li><a>svuResponseDateTimeRenderOption</a></li>
--   <li><a>svuCallback</a></li>
--   <li><a>svuResponseValueRenderOption</a></li>
--   </ul>
spreadsheetsValuesUpdate :: Text -> ValueRange -> Text -> SpreadsheetsValuesUpdate

-- | Sets values in a range of a spreadsheet. The caller must specify the
--   spreadsheet ID, range, and a valueInputOption.
--   
--   <i>See:</i> <a>spreadsheetsValuesUpdate</a> smart constructor.
data SpreadsheetsValuesUpdate

-- | V1 error format.
svuXgafv :: Lens' SpreadsheetsValuesUpdate (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
svuUploadProtocol :: Lens' SpreadsheetsValuesUpdate (Maybe Text)

-- | Pretty-print response.
svuPp :: Lens' SpreadsheetsValuesUpdate Bool

-- | OAuth access token.
svuAccessToken :: Lens' SpreadsheetsValuesUpdate (Maybe Text)

-- | The ID of the spreadsheet to update.
svuSpreadsheetId :: Lens' SpreadsheetsValuesUpdate Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
svuUploadType :: Lens' SpreadsheetsValuesUpdate (Maybe Text)

-- | How the input data should be interpreted.
svuValueInputOption :: Lens' SpreadsheetsValuesUpdate (Maybe Text)

-- | Multipart request metadata.
svuPayload :: Lens' SpreadsheetsValuesUpdate ValueRange

-- | OAuth bearer token.
svuBearerToken :: Lens' SpreadsheetsValuesUpdate (Maybe Text)

-- | The A1 notation of the values to update.
svuRange :: Lens' SpreadsheetsValuesUpdate 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 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)

-- | 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)

-- | JSONP
svuCallback :: Lens' SpreadsheetsValuesUpdate (Maybe Text)

-- | Determines how values in the response should be rendered. The default
--   render option is ValueRenderOption.FORMATTED_VALUE.
svuResponseValueRenderOption :: Lens' SpreadsheetsValuesUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.Update.SpreadsheetsValuesUpdate
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.Update.SpreadsheetsValuesUpdate
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.Update.SpreadsheetsValuesUpdate
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.Update.SpreadsheetsValuesUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.Update.SpreadsheetsValuesUpdate


-- | Returns a range of values from a spreadsheet. The caller must specify
--   the spreadsheet ID and a range.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.values.get</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Values.Get

-- | A resource alias for <tt>sheets.spreadsheets.values.get</tt> method
--   which the <a>SpreadsheetsValuesGet</a> request conforms to.
type SpreadsheetsValuesGetResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values" :> (Capture "range" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "valueRenderOption" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "dateTimeRenderOption" Text :> (QueryParam "majorDimension" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ValueRange)))))))))))))))

-- | Creates a value of <a>SpreadsheetsValuesGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>svgXgafv</a></li>
--   <li><a>svgValueRenderOption</a></li>
--   <li><a>svgUploadProtocol</a></li>
--   <li><a>svgPp</a></li>
--   <li><a>svgAccessToken</a></li>
--   <li><a>svgSpreadsheetId</a></li>
--   <li><a>svgUploadType</a></li>
--   <li><a>svgBearerToken</a></li>
--   <li><a>svgRange</a></li>
--   <li><a>svgDateTimeRenderOption</a></li>
--   <li><a>svgMajorDimension</a></li>
--   <li><a>svgCallback</a></li>
--   </ul>
spreadsheetsValuesGet :: Text -> Text -> SpreadsheetsValuesGet

-- | Returns a range of values from a spreadsheet. The caller must specify
--   the spreadsheet ID and a range.
--   
--   <i>See:</i> <a>spreadsheetsValuesGet</a> smart constructor.
data SpreadsheetsValuesGet

-- | V1 error format.
svgXgafv :: Lens' SpreadsheetsValuesGet (Maybe Xgafv)

-- | How values should be represented in the output. The default render
--   option is ValueRenderOption.FORMATTED_VALUE.
svgValueRenderOption :: Lens' SpreadsheetsValuesGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
svgUploadProtocol :: Lens' SpreadsheetsValuesGet (Maybe Text)

-- | Pretty-print response.
svgPp :: Lens' SpreadsheetsValuesGet Bool

-- | OAuth access token.
svgAccessToken :: Lens' SpreadsheetsValuesGet (Maybe Text)

-- | The ID of the spreadsheet to retrieve data from.
svgSpreadsheetId :: Lens' SpreadsheetsValuesGet Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
svgUploadType :: Lens' SpreadsheetsValuesGet (Maybe Text)

-- | OAuth bearer token.
svgBearerToken :: Lens' SpreadsheetsValuesGet (Maybe Text)

-- | The A1 notation of the values to retrieve.
svgRange :: Lens' SpreadsheetsValuesGet 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 [DateTimeRenderOption.SERIAL_NUMBER].
svgDateTimeRenderOption :: Lens' SpreadsheetsValuesGet (Maybe Text)

-- | 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)

-- | JSONP
svgCallback :: Lens' SpreadsheetsValuesGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.Get.SpreadsheetsValuesGet
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.Get.SpreadsheetsValuesGet
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.Get.SpreadsheetsValuesGet
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.Get.SpreadsheetsValuesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.Get.SpreadsheetsValuesGet


-- | 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.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.values.clear</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Values.Clear

-- | A resource alias for <tt>sheets.spreadsheets.values.clear</tt> method
--   which the <a>SpreadsheetsValuesClear</a> request conforms to.
type SpreadsheetsValuesClearResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values" :> (CaptureMode "range" "clear" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ClearValuesRequest :> Post '[JSON] ClearValuesResponse)))))))))))))

-- | Creates a value of <a>SpreadsheetsValuesClear</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>svcXgafv</a></li>
--   <li><a>svcUploadProtocol</a></li>
--   <li><a>svcPp</a></li>
--   <li><a>svcAccessToken</a></li>
--   <li><a>svcSpreadsheetId</a></li>
--   <li><a>svcUploadType</a></li>
--   <li><a>svcPayload</a></li>
--   <li><a>svcBearerToken</a></li>
--   <li><a>svcRange</a></li>
--   <li><a>svcCallback</a></li>
--   </ul>
spreadsheetsValuesClear :: Text -> ClearValuesRequest -> Text -> SpreadsheetsValuesClear

-- | 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.
--   
--   <i>See:</i> <a>spreadsheetsValuesClear</a> smart constructor.
data SpreadsheetsValuesClear

-- | V1 error format.
svcXgafv :: Lens' SpreadsheetsValuesClear (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
svcUploadProtocol :: Lens' SpreadsheetsValuesClear (Maybe Text)

-- | Pretty-print response.
svcPp :: Lens' SpreadsheetsValuesClear Bool

-- | OAuth access token.
svcAccessToken :: Lens' SpreadsheetsValuesClear (Maybe Text)

-- | The ID of the spreadsheet to update.
svcSpreadsheetId :: Lens' SpreadsheetsValuesClear Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
svcUploadType :: Lens' SpreadsheetsValuesClear (Maybe Text)

-- | Multipart request metadata.
svcPayload :: Lens' SpreadsheetsValuesClear ClearValuesRequest

-- | OAuth bearer token.
svcBearerToken :: Lens' SpreadsheetsValuesClear (Maybe Text)

-- | The A1 notation of the values to clear.
svcRange :: Lens' SpreadsheetsValuesClear Text

-- | JSONP
svcCallback :: Lens' SpreadsheetsValuesClear (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.Clear.SpreadsheetsValuesClear
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.Clear.SpreadsheetsValuesClear
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.Clear.SpreadsheetsValuesClear
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.Clear.SpreadsheetsValuesClear
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.Clear.SpreadsheetsValuesClear


-- | Sets values in one or more ranges of a spreadsheet. The caller must
--   specify the spreadsheet ID, a valueInputOption, and one or more
--   ValueRanges.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.values.batchUpdate</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate

-- | A resource alias for <tt>sheets.spreadsheets.values.batchUpdate</tt>
--   method which the <a>SpreadsheetsValuesBatchUpdate</a> request conforms
--   to.
type SpreadsheetsValuesBatchUpdateResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values:batchUpdate" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BatchUpdateValuesRequest :> Post '[JSON] BatchUpdateValuesResponse))))))))))))

-- | Creates a value of <a>SpreadsheetsValuesBatchUpdate</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>svbuXgafv</a></li>
--   <li><a>svbuUploadProtocol</a></li>
--   <li><a>svbuPp</a></li>
--   <li><a>svbuAccessToken</a></li>
--   <li><a>svbuSpreadsheetId</a></li>
--   <li><a>svbuUploadType</a></li>
--   <li><a>svbuPayload</a></li>
--   <li><a>svbuBearerToken</a></li>
--   <li><a>svbuCallback</a></li>
--   </ul>
spreadsheetsValuesBatchUpdate :: Text -> BatchUpdateValuesRequest -> SpreadsheetsValuesBatchUpdate

-- | Sets values in one or more ranges of a spreadsheet. The caller must
--   specify the spreadsheet ID, a valueInputOption, and one or more
--   ValueRanges.
--   
--   <i>See:</i> <a>spreadsheetsValuesBatchUpdate</a> smart constructor.
data SpreadsheetsValuesBatchUpdate

-- | V1 error format.
svbuXgafv :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
svbuUploadProtocol :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)

-- | Pretty-print response.
svbuPp :: Lens' SpreadsheetsValuesBatchUpdate Bool

-- | OAuth access token.
svbuAccessToken :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)

-- | The ID of the spreadsheet to update.
svbuSpreadsheetId :: Lens' SpreadsheetsValuesBatchUpdate Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
svbuUploadType :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)

-- | Multipart request metadata.
svbuPayload :: Lens' SpreadsheetsValuesBatchUpdate BatchUpdateValuesRequest

-- | OAuth bearer token.
svbuBearerToken :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)

-- | JSONP
svbuCallback :: Lens' SpreadsheetsValuesBatchUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate.SpreadsheetsValuesBatchUpdate
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate.SpreadsheetsValuesBatchUpdate
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate.SpreadsheetsValuesBatchUpdate
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate.SpreadsheetsValuesBatchUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.BatchUpdate.SpreadsheetsValuesBatchUpdate


-- | Returns one or more ranges of values from a spreadsheet. The caller
--   must specify the spreadsheet ID and one or more ranges.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.values.batchGet</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet

-- | A resource alias for <tt>sheets.spreadsheets.values.batchGet</tt>
--   method which the <a>SpreadsheetsValuesBatchGet</a> request conforms
--   to.
type SpreadsheetsValuesBatchGetResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values:batchGet" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "valueRenderOption" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParams "ranges" Text :> (QueryParam "bearer_token" Text :> (QueryParam "dateTimeRenderOption" Text :> (QueryParam "majorDimension" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] BatchGetValuesResponse)))))))))))))))

-- | Creates a value of <a>SpreadsheetsValuesBatchGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>svbgXgafv</a></li>
--   <li><a>svbgValueRenderOption</a></li>
--   <li><a>svbgUploadProtocol</a></li>
--   <li><a>svbgPp</a></li>
--   <li><a>svbgAccessToken</a></li>
--   <li><a>svbgSpreadsheetId</a></li>
--   <li><a>svbgUploadType</a></li>
--   <li><a>svbgRanges</a></li>
--   <li><a>svbgBearerToken</a></li>
--   <li><a>svbgDateTimeRenderOption</a></li>
--   <li><a>svbgMajorDimension</a></li>
--   <li><a>svbgCallback</a></li>
--   </ul>
spreadsheetsValuesBatchGet :: Text -> SpreadsheetsValuesBatchGet

-- | Returns one or more ranges of values from a spreadsheet. The caller
--   must specify the spreadsheet ID and one or more ranges.
--   
--   <i>See:</i> <a>spreadsheetsValuesBatchGet</a> smart constructor.
data SpreadsheetsValuesBatchGet

-- | V1 error format.
svbgXgafv :: Lens' SpreadsheetsValuesBatchGet (Maybe Xgafv)

-- | How values should be represented in the output. The default render
--   option is ValueRenderOption.FORMATTED_VALUE.
svbgValueRenderOption :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
svbgUploadProtocol :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)

-- | Pretty-print response.
svbgPp :: Lens' SpreadsheetsValuesBatchGet Bool

-- | OAuth access token.
svbgAccessToken :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)

-- | The ID of the spreadsheet to retrieve data from.
svbgSpreadsheetId :: Lens' SpreadsheetsValuesBatchGet Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
svbgUploadType :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)

-- | The A1 notation of the values to retrieve.
svbgRanges :: Lens' SpreadsheetsValuesBatchGet [Text]

-- | OAuth bearer token.
svbgBearerToken :: Lens' SpreadsheetsValuesBatchGet (Maybe 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 [DateTimeRenderOption.SERIAL_NUMBER].
svbgDateTimeRenderOption :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)

-- | 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)

-- | JSONP
svbgCallback :: Lens' SpreadsheetsValuesBatchGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet.SpreadsheetsValuesBatchGet
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet.SpreadsheetsValuesBatchGet
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet.SpreadsheetsValuesBatchGet
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet.SpreadsheetsValuesBatchGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.BatchGet.SpreadsheetsValuesBatchGet


-- | 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.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.values.batchClear</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear

-- | A resource alias for <tt>sheets.spreadsheets.values.batchClear</tt>
--   method which the <a>SpreadsheetsValuesBatchClear</a> request conforms
--   to.
type SpreadsheetsValuesBatchClearResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values:batchClear" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BatchClearValuesRequest :> Post '[JSON] BatchClearValuesResponse))))))))))))

-- | Creates a value of <a>SpreadsheetsValuesBatchClear</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>svbcXgafv</a></li>
--   <li><a>svbcUploadProtocol</a></li>
--   <li><a>svbcPp</a></li>
--   <li><a>svbcAccessToken</a></li>
--   <li><a>svbcSpreadsheetId</a></li>
--   <li><a>svbcUploadType</a></li>
--   <li><a>svbcPayload</a></li>
--   <li><a>svbcBearerToken</a></li>
--   <li><a>svbcCallback</a></li>
--   </ul>
spreadsheetsValuesBatchClear :: Text -> BatchClearValuesRequest -> SpreadsheetsValuesBatchClear

-- | 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.
--   
--   <i>See:</i> <a>spreadsheetsValuesBatchClear</a> smart constructor.
data SpreadsheetsValuesBatchClear

-- | V1 error format.
svbcXgafv :: Lens' SpreadsheetsValuesBatchClear (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
svbcUploadProtocol :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)

-- | Pretty-print response.
svbcPp :: Lens' SpreadsheetsValuesBatchClear Bool

-- | OAuth access token.
svbcAccessToken :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)

-- | The ID of the spreadsheet to update.
svbcSpreadsheetId :: Lens' SpreadsheetsValuesBatchClear Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
svbcUploadType :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)

-- | Multipart request metadata.
svbcPayload :: Lens' SpreadsheetsValuesBatchClear BatchClearValuesRequest

-- | OAuth bearer token.
svbcBearerToken :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)

-- | JSONP
svbcCallback :: Lens' SpreadsheetsValuesBatchClear (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear.SpreadsheetsValuesBatchClear
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear.SpreadsheetsValuesBatchClear
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear.SpreadsheetsValuesBatchClear
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear.SpreadsheetsValuesBatchClear
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.BatchClear.SpreadsheetsValuesBatchClear


-- | 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 <a>guide</a> and <a>sample code</a> 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.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.values.append</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Values.Append

-- | A resource alias for <tt>sheets.spreadsheets.values.append</tt> method
--   which the <a>SpreadsheetsValuesAppend</a> request conforms to.
type SpreadsheetsValuesAppendResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("values" :> (CaptureMode "range" "append" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "valueInputOption" Text :> (QueryParam "insertDataOption" Text :> (QueryParam "bearer_token" Text :> (QueryParam "includeValuesInResponse" Bool :> (QueryParam "responseDateTimeRenderOption" Text :> (QueryParam "callback" Text :> (QueryParam "responseValueRenderOption" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ValueRange :> Post '[JSON] AppendValuesResponse))))))))))))))))))

-- | Creates a value of <a>SpreadsheetsValuesAppend</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>svaXgafv</a></li>
--   <li><a>svaUploadProtocol</a></li>
--   <li><a>svaPp</a></li>
--   <li><a>svaAccessToken</a></li>
--   <li><a>svaSpreadsheetId</a></li>
--   <li><a>svaUploadType</a></li>
--   <li><a>svaValueInputOption</a></li>
--   <li><a>svaPayload</a></li>
--   <li><a>svaInsertDataOption</a></li>
--   <li><a>svaBearerToken</a></li>
--   <li><a>svaRange</a></li>
--   <li><a>svaIncludeValuesInResponse</a></li>
--   <li><a>svaResponseDateTimeRenderOption</a></li>
--   <li><a>svaCallback</a></li>
--   <li><a>svaResponseValueRenderOption</a></li>
--   </ul>
spreadsheetsValuesAppend :: Text -> ValueRange -> Text -> SpreadsheetsValuesAppend

-- | 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 <a>guide</a> and <a>sample code</a> 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.
--   
--   <i>See:</i> <a>spreadsheetsValuesAppend</a> smart constructor.
data SpreadsheetsValuesAppend

-- | V1 error format.
svaXgafv :: Lens' SpreadsheetsValuesAppend (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
svaUploadProtocol :: Lens' SpreadsheetsValuesAppend (Maybe Text)

-- | Pretty-print response.
svaPp :: Lens' SpreadsheetsValuesAppend Bool

-- | OAuth access token.
svaAccessToken :: Lens' SpreadsheetsValuesAppend (Maybe Text)

-- | The ID of the spreadsheet to update.
svaSpreadsheetId :: Lens' SpreadsheetsValuesAppend Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
svaUploadType :: Lens' SpreadsheetsValuesAppend (Maybe Text)

-- | How the input data should be interpreted.
svaValueInputOption :: Lens' SpreadsheetsValuesAppend (Maybe Text)

-- | Multipart request metadata.
svaPayload :: Lens' SpreadsheetsValuesAppend ValueRange

-- | How the input data should be inserted.
svaInsertDataOption :: Lens' SpreadsheetsValuesAppend (Maybe Text)

-- | OAuth bearer token.
svaBearerToken :: Lens' SpreadsheetsValuesAppend (Maybe Text)

-- | 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

-- | 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)

-- | 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)

-- | JSONP
svaCallback :: Lens' SpreadsheetsValuesAppend (Maybe Text)

-- | Determines how values in the response should be rendered. The default
--   render option is ValueRenderOption.FORMATTED_VALUE.
svaResponseValueRenderOption :: Lens' SpreadsheetsValuesAppend (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Values.Append.SpreadsheetsValuesAppend
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Values.Append.SpreadsheetsValuesAppend
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Values.Append.SpreadsheetsValuesAppend
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Values.Append.SpreadsheetsValuesAppend
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Values.Append.SpreadsheetsValuesAppend


-- | Copies a single sheet from a spreadsheet to another spreadsheet.
--   Returns the properties of the newly created sheet.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.sheets.copyTo</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo

-- | A resource alias for <tt>sheets.spreadsheets.sheets.copyTo</tt> method
--   which the <a>SpreadsheetsSheetsCopyTo</a> request conforms to.
type SpreadsheetsSheetsCopyToResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> ("sheets" :> (CaptureMode "sheetId" "copyTo" (Textual Int32) :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CopySheetToAnotherSpreadsheetRequest :> Post '[JSON] SheetProperties)))))))))))))

-- | Creates a value of <a>SpreadsheetsSheetsCopyTo</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssctXgafv</a></li>
--   <li><a>ssctUploadProtocol</a></li>
--   <li><a>ssctPp</a></li>
--   <li><a>ssctAccessToken</a></li>
--   <li><a>ssctSpreadsheetId</a></li>
--   <li><a>ssctUploadType</a></li>
--   <li><a>ssctPayload</a></li>
--   <li><a>ssctBearerToken</a></li>
--   <li><a>ssctSheetId</a></li>
--   <li><a>ssctCallback</a></li>
--   </ul>
spreadsheetsSheetsCopyTo :: Text -> CopySheetToAnotherSpreadsheetRequest -> Int32 -> SpreadsheetsSheetsCopyTo

-- | Copies a single sheet from a spreadsheet to another spreadsheet.
--   Returns the properties of the newly created sheet.
--   
--   <i>See:</i> <a>spreadsheetsSheetsCopyTo</a> smart constructor.
data SpreadsheetsSheetsCopyTo

-- | V1 error format.
ssctXgafv :: Lens' SpreadsheetsSheetsCopyTo (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
ssctUploadProtocol :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)

-- | Pretty-print response.
ssctPp :: Lens' SpreadsheetsSheetsCopyTo Bool

-- | OAuth access token.
ssctAccessToken :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)

-- | The ID of the spreadsheet containing the sheet to copy.
ssctSpreadsheetId :: Lens' SpreadsheetsSheetsCopyTo Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ssctUploadType :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)

-- | Multipart request metadata.
ssctPayload :: Lens' SpreadsheetsSheetsCopyTo CopySheetToAnotherSpreadsheetRequest

-- | OAuth bearer token.
ssctBearerToken :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)

-- | The ID of the sheet to copy.
ssctSheetId :: Lens' SpreadsheetsSheetsCopyTo Int32

-- | JSONP
ssctCallback :: Lens' SpreadsheetsSheetsCopyTo (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo.SpreadsheetsSheetsCopyTo
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo.SpreadsheetsSheetsCopyTo
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo.SpreadsheetsSheetsCopyTo
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo.SpreadsheetsSheetsCopyTo
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Sheets.CopyTo.SpreadsheetsSheetsCopyTo


-- | 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.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.get</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Get

-- | A resource alias for <tt>sheets.spreadsheets.get</tt> method which the
--   <a>SpreadsheetsGet</a> request conforms to.
type SpreadsheetsGetResource = "v4" :> ("spreadsheets" :> (Capture "spreadsheetId" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParams "ranges" Text :> (QueryParam "includeGridData" Bool :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Spreadsheet))))))))))))

-- | Creates a value of <a>SpreadsheetsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sgXgafv</a></li>
--   <li><a>sgUploadProtocol</a></li>
--   <li><a>sgPp</a></li>
--   <li><a>sgAccessToken</a></li>
--   <li><a>sgSpreadsheetId</a></li>
--   <li><a>sgUploadType</a></li>
--   <li><a>sgRanges</a></li>
--   <li><a>sgIncludeGridData</a></li>
--   <li><a>sgBearerToken</a></li>
--   <li><a>sgCallback</a></li>
--   </ul>
spreadsheetsGet :: Text -> SpreadsheetsGet

-- | 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.
--   
--   <i>See:</i> <a>spreadsheetsGet</a> smart constructor.
data SpreadsheetsGet

-- | V1 error format.
sgXgafv :: Lens' SpreadsheetsGet (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
sgUploadProtocol :: Lens' SpreadsheetsGet (Maybe Text)

-- | Pretty-print response.
sgPp :: Lens' SpreadsheetsGet Bool

-- | OAuth access token.
sgAccessToken :: Lens' SpreadsheetsGet (Maybe Text)

-- | The spreadsheet to request.
sgSpreadsheetId :: Lens' SpreadsheetsGet Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
sgUploadType :: Lens' SpreadsheetsGet (Maybe Text)

-- | The ranges to retrieve from the spreadsheet.
sgRanges :: Lens' SpreadsheetsGet [Text]

-- | 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)

-- | OAuth bearer token.
sgBearerToken :: Lens' SpreadsheetsGet (Maybe Text)

-- | JSONP
sgCallback :: Lens' SpreadsheetsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Get.SpreadsheetsGet
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Get.SpreadsheetsGet
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Get.SpreadsheetsGet
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Get.SpreadsheetsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Get.SpreadsheetsGet


-- | Creates a spreadsheet, returning the newly created spreadsheet.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.create</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.Create

-- | A resource alias for <tt>sheets.spreadsheets.create</tt> method which
--   the <a>SpreadsheetsCreate</a> request conforms to.
type SpreadsheetsCreateResource = "v4" :> ("spreadsheets" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Spreadsheet :> Post '[JSON] Spreadsheet))))))))))

-- | Creates a value of <a>SpreadsheetsCreate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scXgafv</a></li>
--   <li><a>scUploadProtocol</a></li>
--   <li><a>scPp</a></li>
--   <li><a>scAccessToken</a></li>
--   <li><a>scUploadType</a></li>
--   <li><a>scPayload</a></li>
--   <li><a>scBearerToken</a></li>
--   <li><a>scCallback</a></li>
--   </ul>
spreadsheetsCreate :: Spreadsheet -> SpreadsheetsCreate

-- | Creates a spreadsheet, returning the newly created spreadsheet.
--   
--   <i>See:</i> <a>spreadsheetsCreate</a> smart constructor.
data SpreadsheetsCreate

-- | V1 error format.
scXgafv :: Lens' SpreadsheetsCreate (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
scUploadProtocol :: Lens' SpreadsheetsCreate (Maybe Text)

-- | Pretty-print response.
scPp :: Lens' SpreadsheetsCreate Bool

-- | OAuth access token.
scAccessToken :: Lens' SpreadsheetsCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
scUploadType :: Lens' SpreadsheetsCreate (Maybe Text)

-- | Multipart request metadata.
scPayload :: Lens' SpreadsheetsCreate Spreadsheet

-- | OAuth bearer token.
scBearerToken :: Lens' SpreadsheetsCreate (Maybe Text)

-- | JSONP
scCallback :: Lens' SpreadsheetsCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.Create.SpreadsheetsCreate
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.Create.SpreadsheetsCreate
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.Create.SpreadsheetsCreate
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.Create.SpreadsheetsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.Create.SpreadsheetsCreate


-- | 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.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a> for
--   <tt>sheets.spreadsheets.batchUpdate</tt>.
module Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate

-- | A resource alias for <tt>sheets.spreadsheets.batchUpdate</tt> method
--   which the <a>SpreadsheetsBatchUpdate</a> request conforms to.
type SpreadsheetsBatchUpdateResource = "v4" :> ("spreadsheets" :> (CaptureMode "spreadsheetId" "batchUpdate" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BatchUpdateSpreadsheetRequest :> Post '[JSON] BatchUpdateSpreadsheetResponse)))))))))))

-- | Creates a value of <a>SpreadsheetsBatchUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sbuXgafv</a></li>
--   <li><a>sbuUploadProtocol</a></li>
--   <li><a>sbuPp</a></li>
--   <li><a>sbuAccessToken</a></li>
--   <li><a>sbuSpreadsheetId</a></li>
--   <li><a>sbuUploadType</a></li>
--   <li><a>sbuPayload</a></li>
--   <li><a>sbuBearerToken</a></li>
--   <li><a>sbuCallback</a></li>
--   </ul>
spreadsheetsBatchUpdate :: Text -> BatchUpdateSpreadsheetRequest -> SpreadsheetsBatchUpdate

-- | 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.
--   
--   <i>See:</i> <a>spreadsheetsBatchUpdate</a> smart constructor.
data SpreadsheetsBatchUpdate

-- | V1 error format.
sbuXgafv :: Lens' SpreadsheetsBatchUpdate (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
sbuUploadProtocol :: Lens' SpreadsheetsBatchUpdate (Maybe Text)

-- | Pretty-print response.
sbuPp :: Lens' SpreadsheetsBatchUpdate Bool

-- | OAuth access token.
sbuAccessToken :: Lens' SpreadsheetsBatchUpdate (Maybe Text)

-- | The spreadsheet to apply the updates to.
sbuSpreadsheetId :: Lens' SpreadsheetsBatchUpdate Text

-- | Legacy upload protocol for media (e.g. "media", "multipart").
sbuUploadType :: Lens' SpreadsheetsBatchUpdate (Maybe Text)

-- | Multipart request metadata.
sbuPayload :: Lens' SpreadsheetsBatchUpdate BatchUpdateSpreadsheetRequest

-- | OAuth bearer token.
sbuBearerToken :: Lens' SpreadsheetsBatchUpdate (Maybe Text)

-- | JSONP
sbuCallback :: Lens' SpreadsheetsBatchUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate.SpreadsheetsBatchUpdate
instance Data.Data.Data Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate.SpreadsheetsBatchUpdate
instance GHC.Show.Show Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate.SpreadsheetsBatchUpdate
instance GHC.Classes.Eq Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate.SpreadsheetsBatchUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Sheets.Spreadsheets.BatchUpdate.SpreadsheetsBatchUpdate


-- | Reads and writes Google Sheets.
--   
--   <i>See:</i> <a>Google Sheets API Reference</a>
module Network.Google.Sheets

-- | Default request referring to version <tt>v4</tt> of the Google Sheets
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
sheetsService :: ServiceConfig

-- | View your Google Spreadsheets
spreadsheetsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets.readonly"]

-- | View the files in your Google Drive
driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"]

-- | View and manage the files in your Google Drive
driveScope :: Proxy '["https://www.googleapis.com/auth/drive"]

-- | View and manage your spreadsheets in Google Drive
spreadsheetsScope :: Proxy '["https://www.googleapis.com/auth/spreadsheets"]

-- | Represents the entirety of the methods and resources available for the
--   Google Sheets API service.
type SheetsAPI = SpreadsheetsSheetsCopyToResource :<|> (SpreadsheetsValuesBatchClearResource :<|> (SpreadsheetsValuesGetResource :<|> (SpreadsheetsValuesClearResource :<|> (SpreadsheetsValuesBatchGetResource :<|> (SpreadsheetsValuesBatchUpdateResource :<|> (SpreadsheetsValuesAppendResource :<|> (SpreadsheetsValuesUpdateResource :<|> (SpreadsheetsGetResource :<|> (SpreadsheetsCreateResource :<|> SpreadsheetsBatchUpdateResource)))))))))

-- | Information about which values in a pivot group should be used for
--   sorting.
--   
--   <i>See:</i> <a>pivotGroupSortValueBucket</a> smart constructor.
data PivotGroupSortValueBucket

-- | Creates a value of <a>PivotGroupSortValueBucket</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsvbBuckets</a></li>
--   <li><a>pgsvbValuesIndex</a></li>
--   </ul>
pivotGroupSortValueBucket :: PivotGroupSortValueBucket

-- | Determines the bucket from which values are chosen to sort. For
--   example, in a pivot table with one row group &amp; 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]

-- | The offset in the PivotTable.values list which the values in this
--   grouping should be sorted by.
pgsvbValuesIndex :: Lens' PivotGroupSortValueBucket (Maybe Int32)

-- | Data within a range of the spreadsheet.
--   
--   <i>See:</i> <a>valueRange</a> smart constructor.
data ValueRange

-- | Creates a value of <a>ValueRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vrValues</a></li>
--   <li><a>vrRange</a></li>
--   <li><a>vrMajorDimension</a></li>
--   </ul>
valueRange :: ValueRange

-- | 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]]

-- | 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)

-- | 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)

-- | Sorts data in rows based on a sort order per column.
--   
--   <i>See:</i> <a>sortRangeRequest</a> smart constructor.
data SortRangeRequest

-- | Creates a value of <a>SortRangeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srrSortSpecs</a></li>
--   <li><a>srrRange</a></li>
--   </ul>
sortRangeRequest :: SortRangeRequest

-- | The sort order per column. Later specifications are used when values
--   are equal in the earlier specifications.
srrSortSpecs :: Lens' SortRangeRequest [SortSpec]

-- | The range to sort.
srrRange :: Lens' SortRangeRequest (Maybe GridRange)

-- | What kind of data to paste.
data CopyPasteRequestPasteType

-- | <tt>PASTE_NORMAL</tt> Paste values, formulas, formats, and merges.
PasteNormal :: CopyPasteRequestPasteType

-- | <tt>PASTE_VALUES</tt> Paste the values ONLY without formats, formulas,
--   or merges.
PasteValues :: CopyPasteRequestPasteType

-- | <tt>PASTE_FORMAT</tt> Paste the format and data validation only.
PasteFormat :: CopyPasteRequestPasteType

-- | <tt>PASTE_NO_BORDERS</tt> Like PASTE_NORMAL but without borders.
PasteNoBOrders :: CopyPasteRequestPasteType

-- | <tt>PASTE_FORMULA</tt> Paste the formulas only.
PasteFormula :: CopyPasteRequestPasteType

-- | <tt>PASTE_DATA_VALIDATION</tt> Paste the data validation only.
PasteDataValidation :: CopyPasteRequestPasteType

-- | <tt>PASTE_CONDITIONAL_FORMATTING</tt> Paste the conditional formatting
--   rules only.
PasteConditionalFormatting :: CopyPasteRequestPasteType

-- | Removes the named range with the given ID from the spreadsheet.
--   
--   <i>See:</i> <a>deleteNamedRangeRequest</a> smart constructor.
data DeleteNamedRangeRequest

-- | Creates a value of <a>DeleteNamedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dnrrNamedRangeId</a></li>
--   </ul>
deleteNamedRangeRequest :: DeleteNamedRangeRequest

-- | The ID of the named range to delete.
dnrrNamedRangeId :: Lens' DeleteNamedRangeRequest (Maybe Text)

-- | Updates properties of the named range with the specified namedRangeId.
--   
--   <i>See:</i> <a>updateNamedRangeRequest</a> smart constructor.
data UpdateNamedRangeRequest

-- | Creates a value of <a>UpdateNamedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>unrrNamedRange</a></li>
--   <li><a>unrrFields</a></li>
--   </ul>
updateNamedRangeRequest :: UpdateNamedRangeRequest

-- | The named range to update with the new properties.
unrrNamedRange :: Lens' UpdateNamedRangeRequest (Maybe NamedRange)

-- | The fields that should be updated. At least one field must be
--   specified. The root `namedRange` is implied and should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
unrrFields :: Lens' UpdateNamedRangeRequest (Maybe FieldMask)

-- | The position of this axis.
data BasicChartAxisPosition

-- | <tt>BASIC_CHART_AXIS_POSITION_UNSPECIFIED</tt> Default value, do not
--   use.
BasicChartAxisPositionUnspecified :: BasicChartAxisPosition

-- | <tt>BOTTOM_AXIS</tt> 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.
BottomAxis :: BasicChartAxisPosition

-- | <tt>LEFT_AXIS</tt> 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.
LeftAxis :: BasicChartAxisPosition

-- | <tt>RIGHT_AXIS</tt> 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.
RightAxis :: BasicChartAxisPosition

-- | The data included in a domain or series.
--   
--   <i>See:</i> <a>chartData</a> smart constructor.
data ChartData

-- | Creates a value of <a>ChartData</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdSourceRange</a></li>
--   </ul>
chartData :: ChartData

-- | The source ranges of the data.
cdSourceRange :: Lens' ChartData (Maybe ChartSourceRange)

-- | The request for clearing more than one range of values in a
--   spreadsheet.
--   
--   <i>See:</i> <a>batchClearValuesRequest</a> smart constructor.
data BatchClearValuesRequest

-- | Creates a value of <a>BatchClearValuesRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcvrRanges</a></li>
--   </ul>
batchClearValuesRequest :: BatchClearValuesRequest

-- | The ranges to clear, in A1 notation.
bcvrRanges :: Lens' BatchClearValuesRequest [Text]

-- | 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

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
DimensionUnspecified :: DeleteRangeRequestShiftDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
Rows :: DeleteRangeRequestShiftDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
Columns :: DeleteRangeRequestShiftDimension

-- | 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

-- | <tt>BASIC_CHART_AXIS_POSITION_UNSPECIFIED</tt> Default value, do not
--   use.
BCSTABasicChartAxisPositionUnspecified :: BasicChartSeriesTargetAxis

-- | <tt>BOTTOM_AXIS</tt> 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.
BCSTABottomAxis :: BasicChartSeriesTargetAxis

-- | <tt>LEFT_AXIS</tt> 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.
BCSTALeftAxis :: BasicChartSeriesTargetAxis

-- | <tt>RIGHT_AXIS</tt> 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.
BCSTARightAxis :: BasicChartSeriesTargetAxis

-- | Properties of a spreadsheet.
--   
--   <i>See:</i> <a>spreadsheetProperties</a> smart constructor.
data SpreadsheetProperties

-- | Creates a value of <a>SpreadsheetProperties</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spDefaultFormat</a></li>
--   <li><a>spLocale</a></li>
--   <li><a>spAutoRecalc</a></li>
--   <li><a>spTitle</a></li>
--   <li><a>spTimeZone</a></li>
--   </ul>
spreadsheetProperties :: SpreadsheetProperties

-- | 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)

-- | 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)

-- | The amount of time to wait before volatile functions are recalculated.
spAutoRecalc :: Lens' SpreadsheetProperties (Maybe SpreadsheetPropertiesAutoRecalc)

-- | The title of the spreadsheet.
spTitle :: Lens' SpreadsheetProperties (Maybe Text)

-- | 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)

-- | The borders of the cell.
--   
--   <i>See:</i> <a>bOrders</a> smart constructor.
data BOrders

-- | Creates a value of <a>BOrders</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>boBottom</a></li>
--   <li><a>boLeft</a></li>
--   <li><a>boRight</a></li>
--   <li><a>boTop</a></li>
--   </ul>
bOrders :: BOrders

-- | The bottom border of the cell.
boBottom :: Lens' BOrders (Maybe BOrder)

-- | The left border of the cell.
boLeft :: Lens' BOrders (Maybe BOrder)

-- | The right border of the cell.
boRight :: Lens' BOrders (Maybe BOrder)

-- | The top border of the cell.
boTop :: Lens' BOrders (Maybe BOrder)

-- | 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.
--   
--   <i>See:</i> <a>textFormatRun</a> smart constructor.
data TextFormatRun

-- | Creates a value of <a>TextFormatRun</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tfrFormat</a></li>
--   <li><a>tfrStartIndex</a></li>
--   </ul>
textFormatRun :: TextFormatRun

-- | The format of this run. Absent values inherit the cell's format.
tfrFormat :: Lens' TextFormatRun (Maybe TextFormat)

-- | The character index where this run starts.
tfrStartIndex :: Lens' TextFormatRun (Maybe Int32)

-- | 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.
--   
--   <i>See:</i> <a>addSheetRequest</a> smart constructor.
data AddSheetRequest

-- | Creates a value of <a>AddSheetRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asrProperties</a></li>
--   </ul>
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.)
asrProperties :: Lens' AddSheetRequest (Maybe SheetProperties)

-- | A sort order associated with a specific column or row.
--   
--   <i>See:</i> <a>sortSpec</a> smart constructor.
data SortSpec

-- | Creates a value of <a>SortSpec</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssSortOrder</a></li>
--   <li><a>ssDimensionIndex</a></li>
--   </ul>
sortSpec :: SortSpec

-- | The order data should be sorted.
ssSortOrder :: Lens' SortSpec (Maybe SortSpecSortOrder)

-- | The dimension the sort should be applied to.
ssDimensionIndex :: Lens' SortSpec (Maybe Int32)

-- | 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

-- | <tt>SERIAL_NUMBER</tt> Instructs date, time, datetime, and duration
--   fields to be output as doubles in "serial number" format, as
--   popularized by Lotus 1-2-3. Days are counted from December 31st 1899
--   and are incremented by 1, and times are fractions of a day. For
--   example, January 1st 1900 at noon would be 1.5, 1 because it's 1 day
--   offset from December 31st 1899, and .5 because noon is half a day.
--   February 1st 1900 at 3pm would be 32.625. This correctly treats the
--   year 1900 as not a leap year.
SerialNumber :: BatchUpdateValuesRequestResponseDateTimeRenderOption

-- | <tt>FORMATTED_STRING</tt> Instructs date, time, datetime, and duration
--   fields to be output as strings in their given number format (which is
--   dependent on the spreadsheet locale).
FormattedString :: BatchUpdateValuesRequestResponseDateTimeRenderOption

-- | Copies data from the source to the destination.
--   
--   <i>See:</i> <a>copyPasteRequest</a> smart constructor.
data CopyPasteRequest

-- | Creates a value of <a>CopyPasteRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cprDestination</a></li>
--   <li><a>cprSource</a></li>
--   <li><a>cprPasteOrientation</a></li>
--   <li><a>cprPasteType</a></li>
--   </ul>
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).
cprDestination :: Lens' CopyPasteRequest (Maybe GridRange)

-- | The source range to copy.
cprSource :: Lens' CopyPasteRequest (Maybe GridRange)

-- | How that data should be oriented when pasting.
cprPasteOrientation :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteOrientation)

-- | What kind of data to paste.
cprPasteType :: Lens' CopyPasteRequest (Maybe CopyPasteRequestPasteType)

-- | 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!`.
--   
--   <i>See:</i> <a>gridRange</a> smart constructor.
data GridRange

-- | Creates a value of <a>GridRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grEndColumnIndex</a></li>
--   <li><a>grStartColumnIndex</a></li>
--   <li><a>grEndRowIndex</a></li>
--   <li><a>grStartRowIndex</a></li>
--   <li><a>grSheetId</a></li>
--   </ul>
gridRange :: GridRange

-- | The end column (exclusive) of the range, or not set if unbounded.
grEndColumnIndex :: Lens' GridRange (Maybe Int32)

-- | The start column (inclusive) of the range, or not set if unbounded.
grStartColumnIndex :: Lens' GridRange (Maybe Int32)

-- | The end row (exclusive) of the range, or not set if unbounded.
grEndRowIndex :: Lens' GridRange (Maybe Int32)

-- | The start row (inclusive) of the range, or not set if unbounded.
grStartRowIndex :: Lens' GridRange (Maybe Int32)

-- | The sheet this range is on.
grSheetId :: Lens' GridRange (Maybe Int32)

-- | Whether rows or columns should be appended.
data AppendDimensionRequestDimension

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
ADRDDimensionUnspecified :: AppendDimensionRequestDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
ADRDRows :: AppendDimensionRequestDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
ADRDColumns :: AppendDimensionRequestDimension

-- | The result of adding a filter view.
--   
--   <i>See:</i> <a>addFilterViewResponse</a> smart constructor.
data AddFilterViewResponse

-- | Creates a value of <a>AddFilterViewResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>afvrFilter</a></li>
--   </ul>
addFilterViewResponse :: AddFilterViewResponse

-- | The newly added filter view.
afvrFilter :: Lens' AddFilterViewResponse (Maybe FilterView)

-- | The dimension of the span.
data DimensionRangeDimension

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
DRDDimensionUnspecified :: DimensionRangeDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
DRDRows :: DimensionRangeDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
DRDColumns :: DimensionRangeDimension

-- | A condition that can evaluate to true or false. BooleanConditions are
--   used by conditional formatting, data validation, and the criteria in
--   filters.
--   
--   <i>See:</i> <a>booleanCondition</a> smart constructor.
data BooleanCondition

-- | Creates a value of <a>BooleanCondition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcValues</a></li>
--   <li><a>bcType</a></li>
--   </ul>
booleanCondition :: BooleanCondition

-- | 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]

-- | The type of condition.
bcType :: Lens' BooleanCondition (Maybe BooleanConditionType)

-- | Automatically resizes one or more dimensions based on the contents of
--   the cells in that dimension.
--   
--   <i>See:</i> <a>autoResizeDimensionsRequest</a> smart constructor.
data AutoResizeDimensionsRequest

-- | Creates a value of <a>AutoResizeDimensionsRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ardrDimensions</a></li>
--   </ul>
autoResizeDimensionsRequest :: AutoResizeDimensionsRequest

-- | The dimensions to automatically resize. Only COLUMNS are supported.
ardrDimensions :: Lens' AutoResizeDimensionsRequest (Maybe DimensionRange)

-- | Deletes a range of cells, shifting other cells into the deleted area.
--   
--   <i>See:</i> <a>deleteRangeRequest</a> smart constructor.
data DeleteRangeRequest

-- | Creates a value of <a>DeleteRangeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drrShiftDimension</a></li>
--   <li><a>drrRange</a></li>
--   </ul>
deleteRangeRequest :: DeleteRangeRequest

-- | 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)

-- | The range of cells to delete.
drrRange :: Lens' DeleteRangeRequest (Maybe GridRange)

-- | A sheet in a spreadsheet.
--   
--   <i>See:</i> <a>sheet</a> smart constructor.
data Sheet

-- | Creates a value of <a>Sheet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sData</a></li>
--   <li><a>sMerges</a></li>
--   <li><a>sProtectedRanges</a></li>
--   <li><a>sBandedRanges</a></li>
--   <li><a>sCharts</a></li>
--   <li><a>sBasicFilter</a></li>
--   <li><a>sConditionalFormats</a></li>
--   <li><a>sFilterViews</a></li>
--   <li><a>sProperties</a></li>
--   </ul>
sheet :: Sheet

-- | 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]

-- | The ranges that are merged together.
sMerges :: Lens' Sheet [GridRange]

-- | The protected ranges in this sheet.
sProtectedRanges :: Lens' Sheet [ProtectedRange]

-- | The banded (i.e. alternating colors) ranges on this sheet.
sBandedRanges :: Lens' Sheet [BandedRange]

-- | The specifications of every chart on this sheet.
sCharts :: Lens' Sheet [EmbeddedChart]

-- | The filter on this sheet, if any.
sBasicFilter :: Lens' Sheet (Maybe BasicFilter)

-- | The conditional format rules in this sheet.
sConditionalFormats :: Lens' Sheet [ConditionalFormatRule]

-- | The filter views in this sheet.
sFilterViews :: Lens' Sheet [FilterView]

-- | The properties of the sheet.
sProperties :: Lens' Sheet (Maybe SheetProperties)

-- | A coordinate in a sheet. All indexes are zero-based.
--   
--   <i>See:</i> <a>gridCoordinate</a> smart constructor.
data GridCoordinate

-- | Creates a value of <a>GridCoordinate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gcColumnIndex</a></li>
--   <li><a>gcRowIndex</a></li>
--   <li><a>gcSheetId</a></li>
--   </ul>
gridCoordinate :: GridCoordinate

-- | The column index of the coordinate.
gcColumnIndex :: Lens' GridCoordinate (Maybe Int32)

-- | The row index of the coordinate.
gcRowIndex :: Lens' GridCoordinate (Maybe Int32)

-- | The sheet this coordinate is on.
gcSheetId :: Lens' GridCoordinate (Maybe Int32)

-- | The response when clearing a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>clearValuesResponse</a> smart constructor.
data ClearValuesResponse

-- | Creates a value of <a>ClearValuesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cvrClearedRange</a></li>
--   <li><a>cvrSpreadsheetId</a></li>
--   </ul>
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.)
cvrClearedRange :: Lens' ClearValuesResponse (Maybe Text)

-- | The spreadsheet the updates were applied to.
cvrSpreadsheetId :: Lens' ClearValuesResponse (Maybe Text)

-- | Clears the basic filter, if any exists on the sheet.
--   
--   <i>See:</i> <a>clearBasicFilterRequest</a> smart constructor.
data ClearBasicFilterRequest

-- | Creates a value of <a>ClearBasicFilterRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbfrSheetId</a></li>
--   </ul>
clearBasicFilterRequest :: ClearBasicFilterRequest

-- | The sheet ID on which the basic filter should be cleared.
cbfrSheetId :: Lens' ClearBasicFilterRequest (Maybe Int32)

-- | Update an embedded object's position (such as a moving or resizing a
--   chart or image).
--   
--   <i>See:</i> <a>updateEmbeddedObjectPositionRequest</a> smart
--   constructor.
data UpdateEmbeddedObjectPositionRequest

-- | Creates a value of <a>UpdateEmbeddedObjectPositionRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ueoprNewPosition</a></li>
--   <li><a>ueoprObjectId</a></li>
--   <li><a>ueoprFields</a></li>
--   </ul>
updateEmbeddedObjectPositionRequest :: UpdateEmbeddedObjectPositionRequest

-- | 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)

-- | The ID of the object to moved.
ueoprObjectId :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe Int32)

-- | The fields of OverlayPosition that should be updated when setting a
--   new position. Used only if newPosition.overlayPosition is set, in
--   which case at least one field must be specified. The root
--   `newPosition.overlayPosition` is implied and should not be specified.
--   A single `"*"` can be used as short-hand for listing every field.
ueoprFields :: Lens' UpdateEmbeddedObjectPositionRequest (Maybe FieldMask)

-- | The dimension that data should be filled into.
data SourceAndDestinationDimension

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
SADDDimensionUnspecified :: SourceAndDestinationDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
SADDRows :: SourceAndDestinationDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
SADDColumns :: SourceAndDestinationDimension

-- | A rule that may or may not match, depending on the condition.
--   
--   <i>See:</i> <a>booleanRule</a> smart constructor.
data BooleanRule

-- | Creates a value of <a>BooleanRule</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>brFormat</a></li>
--   <li><a>brCondition</a></li>
--   </ul>
booleanRule :: BooleanRule

-- | The format to apply. Conditional formatting can only apply a subset of
--   formatting: bold, italic, strikethrough, foreground color &amp;
--   background color.
brFormat :: Lens' BooleanRule (Maybe CellFormat)

-- | The condition of the rule. If the condition evaluates to true, the
--   format will be applied.
brCondition :: Lens' BooleanRule (Maybe BooleanCondition)

-- | The wrap strategy for the value in the cell.
data CellFormatWrapStrategy

-- | <tt>WRAP_STRATEGY_UNSPECIFIED</tt> The default value, do not use.
WrapStrategyUnspecified :: CellFormatWrapStrategy

-- | <tt>OVERFLOW_CELL</tt> 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. &lt;- Text continues into next cell | Next newline. |
OverflowCell :: CellFormatWrapStrategy

-- | <tt>LEGACY_WRAP</tt> 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| &lt;- Word is clipped. | word. |
LegacyWrap :: CellFormatWrapStrategy

-- | <tt>CLIP</tt> 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| &lt;- Text is clipped | Next newline. |
Clip :: CellFormatWrapStrategy

-- | <tt>WRAP</tt> Words that are longer than a line are wrapped at the
--   character level rather than clipped. Example: | Cell has a | |
--   loooooooooo| &lt;- Word is broken. | ong word. |
Wrap :: CellFormatWrapStrategy

-- | A combination of a source range and how to extend that source.
--   
--   <i>See:</i> <a>sourceAndDestination</a> smart constructor.
data SourceAndDestination

-- | Creates a value of <a>SourceAndDestination</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sadDimension</a></li>
--   <li><a>sadSource</a></li>
--   <li><a>sadFillLength</a></li>
--   </ul>
sourceAndDestination :: SourceAndDestination

-- | The dimension that data should be filled into.
sadDimension :: Lens' SourceAndDestination (Maybe SourceAndDestinationDimension)

-- | The location of the data to use as the source of the autofill.
sadSource :: Lens' SourceAndDestination (Maybe GridRange)

-- | 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)

-- | Inserts data into the spreadsheet starting at the specified
--   coordinate.
--   
--   <i>See:</i> <a>pasteDataRequest</a> smart constructor.
data PasteDataRequest

-- | Creates a value of <a>PasteDataRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pdrData</a></li>
--   <li><a>pdrCoordinate</a></li>
--   <li><a>pdrHTML</a></li>
--   <li><a>pdrType</a></li>
--   <li><a>pdrDelimiter</a></li>
--   </ul>
pasteDataRequest :: PasteDataRequest

-- | The data to insert.
pdrData :: Lens' PasteDataRequest (Maybe Text)

-- | The coordinate at which the data should start being inserted.
pdrCoordinate :: Lens' PasteDataRequest (Maybe GridCoordinate)

-- | True if the data is HTML.
pdrHTML :: Lens' PasteDataRequest (Maybe Bool)

-- | How the data should be pasted.
pdrType :: Lens' PasteDataRequest (Maybe PasteDataRequestType)

-- | The delimiter in the data.
pdrDelimiter :: Lens' PasteDataRequest (Maybe Text)

-- | How the input data should be interpreted.
data BatchUpdateValuesRequestValueInputOption

-- | <tt>INPUT_VALUE_OPTION_UNSPECIFIED</tt> Default input value. This
--   value must not be used.
InputValueOptionUnspecified :: BatchUpdateValuesRequestValueInputOption

-- | <tt>RAW</tt> The values the user has entered will not be parsed and
--   will be stored as-is.
Raw :: BatchUpdateValuesRequestValueInputOption

-- | <tt>USER_ENTERED</tt> 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.
UserEntered :: BatchUpdateValuesRequestValueInputOption

-- | Adds new cells after the last row with data in a sheet, inserting new
--   rows into the sheet if necessary.
--   
--   <i>See:</i> <a>appendCellsRequest</a> smart constructor.
data AppendCellsRequest

-- | Creates a value of <a>AppendCellsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acrRows</a></li>
--   <li><a>acrSheetId</a></li>
--   <li><a>acrFields</a></li>
--   </ul>
appendCellsRequest :: AppendCellsRequest

-- | The data to append.
acrRows :: Lens' AppendCellsRequest [RowData]

-- | The sheet ID to append the data to.
acrSheetId :: Lens' AppendCellsRequest (Maybe Int32)

-- | The fields of CellData that should be updated. At least one field must
--   be specified. The root is the CellData; 'row.values.' should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
acrFields :: Lens' AppendCellsRequest (Maybe FieldMask)

-- | The result of the find/replace.
--   
--   <i>See:</i> <a>findReplaceResponse</a> smart constructor.
data FindReplaceResponse

-- | Creates a value of <a>FindReplaceResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frrValuesChanged</a></li>
--   <li><a>frrFormulasChanged</a></li>
--   <li><a>frrRowsChanged</a></li>
--   <li><a>frrSheetsChanged</a></li>
--   <li><a>frrOccurrencesChanged</a></li>
--   </ul>
findReplaceResponse :: FindReplaceResponse

-- | The number of non-formula cells changed.
frrValuesChanged :: Lens' FindReplaceResponse (Maybe Int32)

-- | The number of formula cells changed.
frrFormulasChanged :: Lens' FindReplaceResponse (Maybe Int32)

-- | The number of rows changed.
frrRowsChanged :: Lens' FindReplaceResponse (Maybe Int32)

-- | The number of sheets changed.
frrSheetsChanged :: Lens' FindReplaceResponse (Maybe 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"` -&gt; `"Googlo Shoots"`.
frrOccurrencesChanged :: Lens' FindReplaceResponse (Maybe Int32)

-- | A <a>pie chart</a>.
--   
--   <i>See:</i> <a>pieChartSpec</a> smart constructor.
data PieChartSpec

-- | Creates a value of <a>PieChartSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcsPieHole</a></li>
--   <li><a>pcsLegendPosition</a></li>
--   <li><a>pcsDomain</a></li>
--   <li><a>pcsSeries</a></li>
--   <li><a>pcsThreeDimensional</a></li>
--   </ul>
pieChartSpec :: PieChartSpec

-- | The size of the hole in the pie chart.
pcsPieHole :: Lens' PieChartSpec (Maybe Double)

-- | Where the legend of the pie chart should be drawn.
pcsLegendPosition :: Lens' PieChartSpec (Maybe PieChartSpecLegendPosition)

-- | The data that covers the domain of the pie chart.
pcsDomain :: Lens' PieChartSpec (Maybe ChartData)

-- | The data that covers the one and only series of the pie chart.
pcsSeries :: Lens' PieChartSpec (Maybe ChartData)

-- | True if the pie is three dimensional.
pcsThreeDimensional :: Lens' PieChartSpec (Maybe Bool)

-- | The response when updating a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>appendValuesResponse</a> smart constructor.
data AppendValuesResponse

-- | Creates a value of <a>AppendValuesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>avrSpreadsheetId</a></li>
--   <li><a>avrUpdates</a></li>
--   <li><a>avrTableRange</a></li>
--   </ul>
appendValuesResponse :: AppendValuesResponse

-- | The spreadsheet the updates were applied to.
avrSpreadsheetId :: Lens' AppendValuesResponse (Maybe Text)

-- | Information about the updates that were applied.
avrUpdates :: Lens' AppendValuesResponse (Maybe UpdateValuesResponse)

-- | 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)

-- | Determines how values in the response should be rendered. The default
--   render option is ValueRenderOption.FORMATTED_VALUE.
data BatchUpdateValuesRequestResponseValueRenderOption

-- | <tt>FORMATTED_VALUE</tt> Values will be calculated &amp; 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"`.
FormattedValue :: BatchUpdateValuesRequestResponseValueRenderOption

-- | <tt>UNFORMATTED_VALUE</tt> 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`.
UnformattedValue :: BatchUpdateValuesRequestResponseValueRenderOption

-- | <tt>FORMULA</tt> 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"`.
Formula :: BatchUpdateValuesRequestResponseValueRenderOption

-- | A data validation rule.
--   
--   <i>See:</i> <a>dataValidationRule</a> smart constructor.
data DataValidationRule

-- | Creates a value of <a>DataValidationRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dvrShowCustomUi</a></li>
--   <li><a>dvrInputMessage</a></li>
--   <li><a>dvrStrict</a></li>
--   <li><a>dvrCondition</a></li>
--   </ul>
dataValidationRule :: DataValidationRule

-- | 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)

-- | A message to show the user when adding data to the cell.
dvrInputMessage :: Lens' DataValidationRule (Maybe Text)

-- | True if invalid data should be rejected.
dvrStrict :: Lens' DataValidationRule (Maybe Bool)

-- | The condition that data in the cell must match.
dvrCondition :: Lens' DataValidationRule (Maybe BooleanCondition)

-- | A filter view.
--   
--   <i>See:</i> <a>filterView</a> smart constructor.
data FilterView

-- | Creates a value of <a>FilterView</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fvSortSpecs</a></li>
--   <li><a>fvNamedRangeId</a></li>
--   <li><a>fvRange</a></li>
--   <li><a>fvFilterViewId</a></li>
--   <li><a>fvTitle</a></li>
--   <li><a>fvCriteria</a></li>
--   </ul>
filterView :: FilterView

-- | The sort order per column. Later specifications are used when values
--   are equal in the earlier specifications.
fvSortSpecs :: Lens' FilterView [SortSpec]

-- | 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)

-- | The range this filter view covers. When writing, only one of range or
--   named_range_id may be set.
fvRange :: Lens' FilterView (Maybe GridRange)

-- | The ID of the filter view.
fvFilterViewId :: Lens' FilterView (Maybe Int32)

-- | The name of the filter view.
fvTitle :: Lens' FilterView (Maybe Text)

-- | 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)

-- | Represents a color in the RGBA color space. This representation is
--   designed for simplicity of conversion to/from color representations in
--   various languages over compactness; for example, the fields of this
--   representation can be trivially provided to the constructor of
--   "java.awt.Color" in Java; it can also be trivially provided to
--   UIColor's "+colorWithRed:green:blue:alpha" method in iOS; and, with
--   just a little work, it can be easily formatted into a CSS "rgba()"
--   string in JavaScript, as well. Here are some examples: Example (Java):
--   import com.google.type.Color; // ... public static java.awt.Color
--   fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ?
--   protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color(
--   protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(),
--   alpha); } public static Color toProto(java.awt.Color color) { float
--   red = (float) color.getRed(); float green = (float) color.getGreen();
--   float blue = (float) color.getBlue(); float denominator = 255.0;
--   Color.Builder resultBuilder = Color .newBuilder() .setRed(red /
--   denominator) .setGreen(green / denominator) .setBlue(blue /
--   denominator); int alpha = color.getAlpha(); if (alpha != 255) {
--   result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) /
--   denominator) .build()); } return resultBuilder.build(); } // ...
--   Example (iOS / Obj-C): // ... static UIColor* fromProto(Color*
--   protocolor) { float red = [protocolor red]; float green = [protocolor
--   green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper =
--   [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) {
--   alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red
--   green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor*
--   color) { CGFloat red, green, blue, alpha; if (![color getRed:&amp;red
--   green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; }
--   Color* result = [Color alloc] init]; [result setRed:red]; [result
--   setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 &lt;&lt; 16) | (green &lt;&lt;
--   8) | blue); var hexString = rgbNumber.toString(16); var missingZeros =
--   6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i
--   &lt; missingZeros; i++) { resultBuilder.push('0'); }
--   resultBuilder.push(hexString); return resultBuilder.join(''); }; //
--   ...
--   
--   <i>See:</i> <a>color</a> smart constructor.
data Color

-- | Creates a value of <a>Color</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cRed</a></li>
--   <li><a>cAlpha</a></li>
--   <li><a>cGreen</a></li>
--   <li><a>cBlue</a></li>
--   </ul>
color :: Color

-- | The amount of red in the color as a value in the interval [0, 1].
cRed :: Lens' Color (Maybe Double)

-- | 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)

-- | The amount of green in the color as a value in the interval [0, 1].
cGreen :: Lens' Color (Maybe Double)

-- | The amount of blue in the color as a value in the interval [0, 1].
cBlue :: Lens' Color (Maybe Double)

-- | Deletes a particular filter view.
--   
--   <i>See:</i> <a>deleteFilterViewRequest</a> smart constructor.
data DeleteFilterViewRequest

-- | Creates a value of <a>DeleteFilterViewRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfvrFilterId</a></li>
--   </ul>
deleteFilterViewRequest :: DeleteFilterViewRequest

-- | The ID of the filter to delete.
dfvrFilterId :: Lens' DeleteFilterViewRequest (Maybe Int32)

-- | Updates properties of the filter view.
--   
--   <i>See:</i> <a>updateFilterViewRequest</a> smart constructor.
data UpdateFilterViewRequest

-- | Creates a value of <a>UpdateFilterViewRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ufvrFilter</a></li>
--   <li><a>ufvrFields</a></li>
--   </ul>
updateFilterViewRequest :: UpdateFilterViewRequest

-- | The new properties of the filter view.
ufvrFilter :: Lens' UpdateFilterViewRequest (Maybe FilterView)

-- | The fields that should be updated. At least one field must be
--   specified. The root `filter` is implied and should not be specified. A
--   single `"*"` can be used as short-hand for listing every field.
ufvrFields :: Lens' UpdateFilterViewRequest (Maybe FieldMask)

-- | 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".
--   
--   <i>See:</i> <a>basicChartSeries</a> smart constructor.
data BasicChartSeries

-- | Creates a value of <a>BasicChartSeries</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcsTargetAxis</a></li>
--   <li><a>bcsSeries</a></li>
--   <li><a>bcsType</a></li>
--   </ul>
basicChartSeries :: BasicChartSeries

-- | The minor axis that will specify the range of values for this series.
--   For example, if charting stocks over time, the "Volume" series may
--   want to be pinned to the right with the prices pinned to the left,
--   because the scale of trading volume is different than the scale of
--   prices. It is an error to specify an axis that isn't a valid minor
--   axis for the chart's type.
bcsTargetAxis :: Lens' BasicChartSeries (Maybe BasicChartSeriesTargetAxis)

-- | The data being visualized in this chart series.
bcsSeries :: Lens' BasicChartSeries (Maybe ChartData)

-- | The type of this series. Valid only if the chartType is COMBO.
--   Different types will change the way the series is visualized. Only
--   LINE, AREA, and COLUMN are supported.
bcsType :: Lens' BasicChartSeries (Maybe BasicChartSeriesType)

-- | Adds a new protected range.
--   
--   <i>See:</i> <a>addProtectedRangeRequest</a> smart constructor.
data AddProtectedRangeRequest

-- | Creates a value of <a>AddProtectedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aprrProtectedRange</a></li>
--   </ul>
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.)
aprrProtectedRange :: Lens' AddProtectedRangeRequest (Maybe ProtectedRange)

-- | Where the legend of the pie chart should be drawn.
data PieChartSpecLegendPosition

-- | <tt>PIE_CHART_LEGEND_POSITION_UNSPECIFIED</tt> Default value, do not
--   use.
PieChartLegendPositionUnspecified :: PieChartSpecLegendPosition

-- | <tt>BOTTOM_LEGEND</tt> The legend is rendered on the bottom of the
--   chart.
BottomLegend :: PieChartSpecLegendPosition

-- | <tt>LEFT_LEGEND</tt> The legend is rendered on the left of the chart.
LeftLegend :: PieChartSpecLegendPosition

-- | <tt>RIGHT_LEGEND</tt> The legend is rendered on the right of the
--   chart.
RightLegend :: PieChartSpecLegendPosition

-- | <tt>TOP_LEGEND</tt> The legend is rendered on the top of the chart.
TopLegend :: PieChartSpecLegendPosition

-- | <tt>NO_LEGEND</tt> No legend is rendered.
NoLegend :: PieChartSpecLegendPosition

-- | <tt>LABELED_LEGEND</tt> Each pie slice has a label attached to it.
LabeledLegend :: PieChartSpecLegendPosition

-- | 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.
--   
--   <i>See:</i> <a>repeatCellRequest</a> smart constructor.
data RepeatCellRequest

-- | Creates a value of <a>RepeatCellRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcrCell</a></li>
--   <li><a>rcrRange</a></li>
--   <li><a>rcrFields</a></li>
--   </ul>
repeatCellRequest :: RepeatCellRequest

-- | The data to write.
rcrCell :: Lens' RepeatCellRequest (Maybe CellData)

-- | The range to repeat the cell in.
rcrRange :: Lens' RepeatCellRequest (Maybe GridRange)

-- | The fields that should be updated. At least one field must be
--   specified. The root `cell` is implied and should not be specified. A
--   single `"*"` can be used as short-hand for listing every field.
rcrFields :: Lens' RepeatCellRequest (Maybe FieldMask)

-- | The value of the condition.
--   
--   <i>See:</i> <a>conditionValue</a> smart constructor.
data ConditionValue

-- | Creates a value of <a>ConditionValue</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cvRelativeDate</a></li>
--   <li><a>cvUserEnteredValue</a></li>
--   </ul>
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.
cvRelativeDate :: Lens' ConditionValue (Maybe ConditionValueRelativeDate)

-- | A value the condition is based on. The value will be parsed as if the
--   user typed into a cell. Formulas are supported (and must begin with an
--   `=`).
cvUserEnteredValue :: Lens' ConditionValue (Maybe Text)

-- | Deletes the dimensions from the sheet.
--   
--   <i>See:</i> <a>deleteDimensionRequest</a> smart constructor.
data DeleteDimensionRequest

-- | Creates a value of <a>DeleteDimensionRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ddrRange</a></li>
--   </ul>
deleteDimensionRequest :: DeleteDimensionRequest

-- | The dimensions to delete from the sheet.
ddrRange :: Lens' DeleteDimensionRequest (Maybe DimensionRange)

-- | The request for clearing a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>clearValuesRequest</a> smart constructor.
data ClearValuesRequest

-- | Creates a value of <a>ClearValuesRequest</a> with the minimum fields
--   required to make a request.
clearValuesRequest :: ClearValuesRequest

-- | Finds and replaces data in cells over a range, sheet, or all sheets.
--   
--   <i>See:</i> <a>findReplaceRequest</a> smart constructor.
data FindReplaceRequest

-- | Creates a value of <a>FindReplaceRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frrMatchCase</a></li>
--   <li><a>frrAllSheets</a></li>
--   <li><a>frrIncludeFormulas</a></li>
--   <li><a>frrMatchEntireCell</a></li>
--   <li><a>frrRange</a></li>
--   <li><a>frrSheetId</a></li>
--   <li><a>frrFind</a></li>
--   <li><a>frrSearchByRegex</a></li>
--   <li><a>frrReplacement</a></li>
--   </ul>
findReplaceRequest :: FindReplaceRequest

-- | True if the search is case sensitive.
frrMatchCase :: Lens' FindReplaceRequest (Maybe Bool)

-- | True to find/replace over all sheets.
frrAllSheets :: Lens' FindReplaceRequest (Maybe Bool)

-- | True if the search should include cells with formulas. False to skip
--   cells with formulas.
frrIncludeFormulas :: Lens' FindReplaceRequest (Maybe Bool)

-- | True if the find value should match the entire cell.
frrMatchEntireCell :: Lens' FindReplaceRequest (Maybe Bool)

-- | The range to find/replace over.
frrRange :: Lens' FindReplaceRequest (Maybe GridRange)

-- | The sheet to find/replace over.
frrSheetId :: Lens' FindReplaceRequest (Maybe Int32)

-- | The value to search.
frrFind :: Lens' FindReplaceRequest (Maybe 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.
frrSearchByRegex :: Lens' FindReplaceRequest (Maybe Bool)

-- | The value to use as the replacement.
frrReplacement :: Lens' FindReplaceRequest (Maybe Text)

-- | Moves one or more rows or columns.
--   
--   <i>See:</i> <a>moveDimensionRequest</a> smart constructor.
data MoveDimensionRequest

-- | Creates a value of <a>MoveDimensionRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdrDestinationIndex</a></li>
--   <li><a>mdrSource</a></li>
--   </ul>
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`.
mdrDestinationIndex :: Lens' MoveDimensionRequest (Maybe Int32)

-- | The source dimensions to move.
mdrSource :: Lens' MoveDimensionRequest (Maybe DimensionRange)

-- | The vertical alignment of the value in the cell.
data CellFormatVerticalAlignment

-- | <tt>VERTICAL_ALIGN_UNSPECIFIED</tt> The vertical alignment is not
--   specified. Do not use this.
VerticalAlignUnspecified :: CellFormatVerticalAlignment

-- | <tt>TOP</tt> The text is explicitly aligned to the top of the cell.
Top :: CellFormatVerticalAlignment

-- | <tt>MIDDLE</tt> The text is explicitly aligned to the middle of the
--   cell.
Middle :: CellFormatVerticalAlignment

-- | <tt>BOTTOM</tt> The text is explicitly aligned to the bottom of the
--   cell.
Bottom :: CellFormatVerticalAlignment

-- | The type of the number format. When writing, this field must be set.
data NumberFormatType

-- | <tt>NUMBER_FORMAT_TYPE_UNSPECIFIED</tt> The number format is not
--   specified and is based on the contents of the cell. Do not explicitly
--   use this.
NumberFormatTypeUnspecified :: NumberFormatType

-- | <tt>TEXT</tt> Text formatting, e.g `1000.12`
Text :: NumberFormatType

-- | <tt>NUMBER</tt> Number formatting, e.g, `1,000.12`
Number :: NumberFormatType

-- | <tt>PERCENT</tt> Percent formatting, e.g `10.12%`
Percent :: NumberFormatType

-- | <tt>CURRENCY</tt> Currency formatting, e.g `$1,000.12`
Currency :: NumberFormatType

-- | <tt>DATE</tt> Date formatting, e.g `9/26/2008`
Date :: NumberFormatType

-- | <tt>TIME</tt> Time formatting, e.g `3:59:00 PM`
Time :: NumberFormatType

-- | <tt>DATE_TIME</tt> Date+Time formatting, e.g `9/26/08 15:59:00`
DateTime :: NumberFormatType

-- | <tt>SCIENTIFIC</tt> Scientific number formatting, e.g `1.01E+03`
Scientific :: NumberFormatType

-- | 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.
--   
--   <i>See:</i> <a>gradientRule</a> smart constructor.
data GradientRule

-- | Creates a value of <a>GradientRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grMidpoint</a></li>
--   <li><a>grMaxpoint</a></li>
--   <li><a>grMinpoint</a></li>
--   </ul>
gradientRule :: GradientRule

-- | An optional midway interpolation point.
grMidpoint :: Lens' GradientRule (Maybe InterpolationPoint)

-- | The final interpolation point.
grMaxpoint :: Lens' GradientRule (Maybe InterpolationPoint)

-- | The starting interpolation point.
grMinpoint :: Lens' GradientRule (Maybe InterpolationPoint)

-- | Moves data from the source to the destination.
--   
--   <i>See:</i> <a>cutPasteRequest</a> smart constructor.
data CutPasteRequest

-- | Creates a value of <a>CutPasteRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cDestination</a></li>
--   <li><a>cSource</a></li>
--   <li><a>cPasteType</a></li>
--   </ul>
cutPasteRequest :: CutPasteRequest

-- | The top-left coordinate where the data should be pasted.
cDestination :: Lens' CutPasteRequest (Maybe GridCoordinate)

-- | The source data to cut.
cSource :: Lens' CutPasteRequest (Maybe GridRange)

-- | What kind of data to paste. All the source data will be cut,
--   regardless of what is pasted.
cPasteType :: Lens' CutPasteRequest (Maybe CutPasteRequestPasteType)

-- | The result of updating an embedded object's position.
--   
--   <i>See:</i> <a>updateEmbeddedObjectPositionResponse</a> smart
--   constructor.
data UpdateEmbeddedObjectPositionResponse

-- | Creates a value of <a>UpdateEmbeddedObjectPositionResponse</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ueoprPosition</a></li>
--   </ul>
updateEmbeddedObjectPositionResponse :: UpdateEmbeddedObjectPositionResponse

-- | The new position of the embedded object.
ueoprPosition :: Lens' UpdateEmbeddedObjectPositionResponse (Maybe EmbeddedObjectPosition)

-- | 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

-- | <tt>RELATIVE_DATE_UNSPECIFIED</tt> Default value, do not use.
RelativeDateUnspecified :: ConditionValueRelativeDate

-- | <tt>PAST_YEAR</tt> The value is one year before today.
PastYear :: ConditionValueRelativeDate

-- | <tt>PAST_MONTH</tt> The value is one month before today.
PastMonth :: ConditionValueRelativeDate

-- | <tt>PAST_WEEK</tt> The value is one week before today.
PastWeek :: ConditionValueRelativeDate

-- | <tt>YESTERDAY</tt> The value is yesterday.
Yesterday :: ConditionValueRelativeDate

-- | <tt>TODAY</tt> The value is today.
Today :: ConditionValueRelativeDate

-- | <tt>TOMORROW</tt> The value is tomorrow.
Tomorrow :: ConditionValueRelativeDate

-- | A single response from an update.
--   
--   <i>See:</i> <a>response</a> smart constructor.
data Response

-- | Creates a value of <a>Response</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rAddFilterView</a></li>
--   <li><a>rDuplicateFilterView</a></li>
--   <li><a>rUpdateEmbeddedObjectPosition</a></li>
--   <li><a>rAddSheet</a></li>
--   <li><a>rFindReplace</a></li>
--   <li><a>rAddProtectedRange</a></li>
--   <li><a>rDeleteConditionalFormatRule</a></li>
--   <li><a>rUpdateConditionalFormatRule</a></li>
--   <li><a>rAddNamedRange</a></li>
--   <li><a>rAddChart</a></li>
--   <li><a>rAddBanding</a></li>
--   <li><a>rDuplicateSheet</a></li>
--   </ul>
response :: Response

-- | A reply from adding a filter view.
rAddFilterView :: Lens' Response (Maybe AddFilterViewResponse)

-- | A reply from duplicating a filter view.
rDuplicateFilterView :: Lens' Response (Maybe DuplicateFilterViewResponse)

-- | A reply from updating an embedded object's position.
rUpdateEmbeddedObjectPosition :: Lens' Response (Maybe UpdateEmbeddedObjectPositionResponse)

-- | A reply from adding a sheet.
rAddSheet :: Lens' Response (Maybe AddSheetResponse)

-- | A reply from doing a find/replace.
rFindReplace :: Lens' Response (Maybe FindReplaceResponse)

-- | A reply from adding a protected range.
rAddProtectedRange :: Lens' Response (Maybe AddProtectedRangeResponse)

-- | A reply from deleting a conditional format rule.
rDeleteConditionalFormatRule :: Lens' Response (Maybe DeleteConditionalFormatRuleResponse)

-- | A reply from updating a conditional format rule.
rUpdateConditionalFormatRule :: Lens' Response (Maybe UpdateConditionalFormatRuleResponse)

-- | A reply from adding a named range.
rAddNamedRange :: Lens' Response (Maybe AddNamedRangeResponse)

-- | A reply from adding a chart.
rAddChart :: Lens' Response (Maybe AddChartResponse)

-- | A reply from adding a banded range.
rAddBanding :: Lens' Response (Maybe AddBandingResponse)

-- | A reply from duplicating a sheet.
rDuplicateSheet :: Lens' Response (Maybe DuplicateSheetResponse)

-- | Criteria for showing/hiding rows in a filter or filter view.
--   
--   <i>See:</i> <a>filterCriteria</a> smart constructor.
data FilterCriteria

-- | Creates a value of <a>FilterCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fcHiddenValues</a></li>
--   <li><a>fcCondition</a></li>
--   </ul>
filterCriteria :: FilterCriteria

-- | Values that should be hidden.
fcHiddenValues :: Lens' FilterCriteria [Text]

-- | 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)

-- | An error in a cell.
--   
--   <i>See:</i> <a>errorValue</a> smart constructor.
data ErrorValue

-- | Creates a value of <a>ErrorValue</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>evType</a></li>
--   <li><a>evMessage</a></li>
--   </ul>
errorValue :: ErrorValue

-- | The type of error.
evType :: Lens' ErrorValue (Maybe ErrorValueType)

-- | A message with more information about the error (in the spreadsheet's
--   locale).
evMessage :: Lens' ErrorValue (Maybe Text)

-- | Updates a conditional format rule at the given index, or moves a
--   conditional format rule to another index.
--   
--   <i>See:</i> <a>updateConditionalFormatRuleRequest</a> smart
--   constructor.
data UpdateConditionalFormatRuleRequest

-- | Creates a value of <a>UpdateConditionalFormatRuleRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucfrrRule</a></li>
--   <li><a>ucfrrNewIndex</a></li>
--   <li><a>ucfrrSheetId</a></li>
--   <li><a>ucfrrIndex</a></li>
--   </ul>
updateConditionalFormatRuleRequest :: UpdateConditionalFormatRuleRequest

-- | The rule that should replace the rule at the given index.
ucfrrRule :: Lens' UpdateConditionalFormatRuleRequest (Maybe ConditionalFormatRule)

-- | The zero-based new index the rule should end up at.
ucfrrNewIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)

-- | The sheet of the rule to move. Required if new_index is set, unused
--   otherwise.
ucfrrSheetId :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)

-- | The zero-based index of the rule that should be replaced or moved.
ucfrrIndex :: Lens' UpdateConditionalFormatRuleRequest (Maybe Int32)

-- | Deletes a conditional format rule at the given index. All subsequent
--   rules' indexes are decremented.
--   
--   <i>See:</i> <a>deleteConditionalFormatRuleRequest</a> smart
--   constructor.
data DeleteConditionalFormatRuleRequest

-- | Creates a value of <a>DeleteConditionalFormatRuleRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcfrrSheetId</a></li>
--   <li><a>dcfrrIndex</a></li>
--   </ul>
deleteConditionalFormatRuleRequest :: DeleteConditionalFormatRuleRequest

-- | The sheet the rule is being deleted from.
dcfrrSheetId :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)

-- | The zero-based index of the rule to be deleted.
dcfrrIndex :: Lens' DeleteConditionalFormatRuleRequest (Maybe Int32)

-- | The order data should be sorted.
data SortSpecSortOrder

-- | <tt>SORT_ORDER_UNSPECIFIED</tt> Default value, do not use this.
SortOrderUnspecified :: SortSpecSortOrder

-- | <tt>ASCENDING</tt> Sort ascending.
Ascending :: SortSpecSortOrder

-- | <tt>DESCENDING</tt> Sort descending.
Descending :: SortSpecSortOrder

-- | The location an object is overlaid on top of a grid.
--   
--   <i>See:</i> <a>overlayPosition</a> smart constructor.
data OverlayPosition

-- | Creates a value of <a>OverlayPosition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>opHeightPixels</a></li>
--   <li><a>opOffSetYPixels</a></li>
--   <li><a>opAnchorCell</a></li>
--   <li><a>opWidthPixels</a></li>
--   <li><a>opOffSetXPixels</a></li>
--   </ul>
overlayPosition :: OverlayPosition

-- | The height of the object, in pixels. Defaults to 371.
opHeightPixels :: Lens' OverlayPosition (Maybe Int32)

-- | The vertical offset, in pixels, that the object is offset from the
--   anchor cell.
opOffSetYPixels :: Lens' OverlayPosition (Maybe Int32)

-- | The cell the object is anchored to.
opAnchorCell :: Lens' OverlayPosition (Maybe GridCoordinate)

-- | The width of the object, in pixels. Defaults to 600.
opWidthPixels :: Lens' OverlayPosition (Maybe Int32)

-- | The horizontal offset, in pixels, that the object is offset from the
--   anchor cell.
opOffSetXPixels :: Lens' OverlayPosition (Maybe Int32)

-- | Deletes the embedded object with the given ID.
--   
--   <i>See:</i> <a>deleteEmbeddedObjectRequest</a> smart constructor.
data DeleteEmbeddedObjectRequest

-- | Creates a value of <a>DeleteEmbeddedObjectRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>deorObjectId</a></li>
--   </ul>
deleteEmbeddedObjectRequest :: DeleteEmbeddedObjectRequest

-- | The ID of the embedded object to delete.
deorObjectId :: Lens' DeleteEmbeddedObjectRequest (Maybe Int32)

-- | Properties of a sheet.
--   
--   <i>See:</i> <a>sheetProperties</a> smart constructor.
data SheetProperties

-- | Creates a value of <a>SheetProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sTabColor</a></li>
--   <li><a>sGridProperties</a></li>
--   <li><a>sSheetType</a></li>
--   <li><a>sHidden</a></li>
--   <li><a>sSheetId</a></li>
--   <li><a>sTitle</a></li>
--   <li><a>sRightToLeft</a></li>
--   <li><a>sIndex</a></li>
--   </ul>
sheetProperties :: SheetProperties

-- | The color of the tab in the UI.
sTabColor :: Lens' SheetProperties (Maybe Color)

-- | 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)

-- | The type of sheet. Defaults to GRID. This field cannot be changed once
--   set.
sSheetType :: Lens' SheetProperties (Maybe SheetPropertiesSheetType)

-- | True if the sheet is hidden in the UI, false if it's visible.
sHidden :: Lens' SheetProperties (Maybe Bool)

-- | The ID of the sheet. Must be non-negative. This field cannot be
--   changed once set.
sSheetId :: Lens' SheetProperties (Maybe Int32)

-- | The name of the sheet.
sTitle :: Lens' SheetProperties (Maybe Text)

-- | True if the sheet is an RTL sheet instead of an LTR sheet.
sRightToLeft :: Lens' SheetProperties (Maybe Bool)

-- | The index of the sheet within the spreadsheet. When adding or updating
--   sheet properties, if this field is excluded then the sheet will be
--   added or moved to the end of the sheet list. When updating sheet
--   indices or inserting sheets, movement is considered in "before the
--   move" indexes. For example, if there were 3 sheets (S1, S2, S3) in
--   order to move S1 ahead of S2 the index would have to be set to 2. A
--   sheet index update request will be ignored if the requested index is
--   identical to the sheets current index or if the requested new index is
--   equal to the current sheet index + 1.
sIndex :: Lens' SheetProperties (Maybe Int32)

-- | 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.
--   
--   <i>See:</i> <a>filterViewCriteria</a> smart constructor.
data FilterViewCriteria

-- | Creates a value of <a>FilterViewCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fvcAddtional</a></li>
--   </ul>
filterViewCriteria :: HashMap Text FilterCriteria -> FilterViewCriteria
fvcAddtional :: Lens' FilterViewCriteria (HashMap Text FilterCriteria)

-- | The response when updating a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>batchUpdateValuesResponse</a> smart constructor.
data BatchUpdateValuesResponse

-- | Creates a value of <a>BatchUpdateValuesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>buvrTotalUpdatedColumns</a></li>
--   <li><a>buvrResponses</a></li>
--   <li><a>buvrSpreadsheetId</a></li>
--   <li><a>buvrTotalUpdatedSheets</a></li>
--   <li><a>buvrTotalUpdatedCells</a></li>
--   <li><a>buvrTotalUpdatedRows</a></li>
--   </ul>
batchUpdateValuesResponse :: BatchUpdateValuesResponse

-- | The total number of columns where at least one cell in the column was
--   updated.
buvrTotalUpdatedColumns :: Lens' BatchUpdateValuesResponse (Maybe Int32)

-- | One UpdateValuesResponse per requested range, in the same order as the
--   requests appeared.
buvrResponses :: Lens' BatchUpdateValuesResponse [UpdateValuesResponse]

-- | The spreadsheet the updates were applied to.
buvrSpreadsheetId :: Lens' BatchUpdateValuesResponse (Maybe Text)

-- | The total number of sheets where at least one cell in the sheet was
--   updated.
buvrTotalUpdatedSheets :: Lens' BatchUpdateValuesResponse (Maybe Int32)

-- | The total number of cells updated.
buvrTotalUpdatedCells :: Lens' BatchUpdateValuesResponse (Maybe Int32)

-- | The total number of rows where at least one cell in the row was
--   updated.
buvrTotalUpdatedRows :: Lens' BatchUpdateValuesResponse (Maybe Int32)

-- | Updates properties of the sheet with the specified sheetId.
--   
--   <i>See:</i> <a>updateSheetPropertiesRequest</a> smart constructor.
data UpdateSheetPropertiesRequest

-- | Creates a value of <a>UpdateSheetPropertiesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usprFields</a></li>
--   <li><a>usprProperties</a></li>
--   </ul>
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.
usprFields :: Lens' UpdateSheetPropertiesRequest (Maybe FieldMask)

-- | The properties to update.
usprProperties :: Lens' UpdateSheetPropertiesRequest (Maybe SheetProperties)

-- | Resource that represents a spreadsheet.
--   
--   <i>See:</i> <a>spreadsheet</a> smart constructor.
data Spreadsheet

-- | Creates a value of <a>Spreadsheet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sprSheets</a></li>
--   <li><a>sprNamedRanges</a></li>
--   <li><a>sprSpreadsheetId</a></li>
--   <li><a>sprSpreadsheetURL</a></li>
--   <li><a>sprProperties</a></li>
--   </ul>
spreadsheet :: Spreadsheet

-- | The sheets that are part of a spreadsheet.
sprSheets :: Lens' Spreadsheet [Sheet]

-- | The named ranges defined in a spreadsheet.
sprNamedRanges :: Lens' Spreadsheet [NamedRange]

-- | The ID of the spreadsheet. This field is read-only.
sprSpreadsheetId :: Lens' Spreadsheet (Maybe Text)

-- | The url of the spreadsheet. This field is read-only.
sprSpreadsheetURL :: Lens' Spreadsheet (Maybe Text)

-- | Overall properties of a spreadsheet.
sprProperties :: Lens' Spreadsheet (Maybe SpreadsheetProperties)

-- | Inserts rows or columns in a sheet at a particular index.
--   
--   <i>See:</i> <a>insertDimensionRequest</a> smart constructor.
data InsertDimensionRequest

-- | Creates a value of <a>InsertDimensionRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>idrRange</a></li>
--   <li><a>idrInheritFromBefore</a></li>
--   </ul>
insertDimensionRequest :: InsertDimensionRequest

-- | The dimensions to insert. Both the start and end indexes must be
--   bounded.
idrRange :: Lens' InsertDimensionRequest (Maybe DimensionRange)

-- | 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)

-- | 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

-- | <tt>PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED</tt> The default, do not
--   use.
PivotStandardValueFunctionUnspecified :: PivotValueSummarizeFunction

-- | <tt>SUM</tt> Corresponds to the `SUM` function.
Sum :: PivotValueSummarizeFunction

-- | <tt>COUNTA</tt> Corresponds to the `COUNTA` function.
Counta :: PivotValueSummarizeFunction

-- | <tt>COUNT</tt> Corresponds to the `COUNT` function.
Count :: PivotValueSummarizeFunction

-- | <tt>COUNTUNIQUE</tt> Corresponds to the `COUNTUNIQUE` function.
Countunique :: PivotValueSummarizeFunction

-- | <tt>AVERAGE</tt> Corresponds to the `AVERAGE` function.
Average :: PivotValueSummarizeFunction

-- | <tt>MAX</tt> Corresponds to the `MAX` function.
Max :: PivotValueSummarizeFunction

-- | <tt>MIN</tt> Corresponds to the `MIN` function.
Min :: PivotValueSummarizeFunction

-- | <tt>MEDIAN</tt> Corresponds to the `MEDIAN` function.
Median :: PivotValueSummarizeFunction

-- | <tt>PRODUCT</tt> Corresponds to the `PRODUCT` function.
Product :: PivotValueSummarizeFunction

-- | <tt>STDEV</tt> Corresponds to the `STDEV` function.
Stdev :: PivotValueSummarizeFunction

-- | <tt>STDEVP</tt> Corresponds to the `STDEVP` function.
Stdevp :: PivotValueSummarizeFunction

-- | <tt>VAR</tt> Corresponds to the `VAR` function.
Var :: PivotValueSummarizeFunction

-- | <tt>VARP</tt> Corresponds to the `VARP` function.
Varp :: PivotValueSummarizeFunction

-- | <tt>CUSTOM</tt> Indicates the formula should be used as-is. Only valid
--   if PivotValue.formula was set.
Custom :: PivotValueSummarizeFunction

-- | A single interpolation point on a gradient conditional format. These
--   pin the gradient color scale according to the color, type and value
--   chosen.
--   
--   <i>See:</i> <a>interpolationPoint</a> smart constructor.
data InterpolationPoint

-- | Creates a value of <a>InterpolationPoint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipColor</a></li>
--   <li><a>ipValue</a></li>
--   <li><a>ipType</a></li>
--   </ul>
interpolationPoint :: InterpolationPoint

-- | The color this interpolation point should use.
ipColor :: Lens' InterpolationPoint (Maybe Color)

-- | The value this interpolation point uses. May be a formula. Unused if
--   type is MIN or MAX.
ipValue :: Lens' InterpolationPoint (Maybe Text)

-- | How the value should be interpreted.
ipType :: Lens' InterpolationPoint (Maybe InterpolationPointType)

-- | Data about a specific cell.
--   
--   <i>See:</i> <a>cellData</a> smart constructor.
data CellData

-- | Creates a value of <a>CellData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdTextFormatRuns</a></li>
--   <li><a>cdNote</a></li>
--   <li><a>cdUserEnteredValue</a></li>
--   <li><a>cdUserEnteredFormat</a></li>
--   <li><a>cdEffectiveFormat</a></li>
--   <li><a>cdPivotTable</a></li>
--   <li><a>cdFormattedValue</a></li>
--   <li><a>cdDataValidation</a></li>
--   <li><a>cdHyperlink</a></li>
--   <li><a>cdEffectiveValue</a></li>
--   </ul>
cellData :: CellData

-- | Runs of rich text applied to subsections of the cell. Runs are only
--   valid on user entered strings, not formulas, bools, or numbers. Runs
--   start at specific indexes in the text and continue until the next run.
--   Properties of a run will continue unless explicitly changed in a
--   subsequent run (and properties of the first run will continue the
--   properties of the cell unless explicitly changed). When writing, the
--   new runs will overwrite any prior runs. When writing a new
--   user_entered_value, previous runs will be erased.
cdTextFormatRuns :: Lens' CellData [TextFormatRun]

-- | Any note on the cell.
cdNote :: Lens' CellData (Maybe Text)

-- | 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)

-- | 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)

-- | 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)

-- | 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)

-- | 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)

-- | 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)

-- | A hyperlink this cell points to, if any. This field is read-only. (To
--   set it, use a `=HYPERLINK` formula.)
cdHyperlink :: Lens' CellData (Maybe Text)

-- | The effective value of the cell. For cells with formulas, this will be
--   the calculated value. For cells with literals, this will be the same
--   as the user_entered_value. This field is read-only.
cdEffectiveValue :: Lens' CellData (Maybe ExtendedValue)

-- | Source ranges for a chart.
--   
--   <i>See:</i> <a>chartSourceRange</a> smart constructor.
data ChartSourceRange

-- | Creates a value of <a>ChartSourceRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csrSources</a></li>
--   </ul>
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) &amp; all series
--   must have the same number of source ranges. If using more than one
--   source range, then the source range at a given offset must be
--   contiguous across the domain and series. For example, these are valid
--   configurations: domain sources: A1:A5 series1 sources: B1:B5 series2
--   sources: D6:D10 domain sources: A1:A5, C10:C12 series1 sources: B1:B5,
--   D10:D12 series2 sources: C1:C5, E10:E12
csrSources :: Lens' ChartSourceRange [GridRange]

-- | The result of adding a named range.
--   
--   <i>See:</i> <a>addNamedRangeResponse</a> smart constructor.
data AddNamedRangeResponse

-- | Creates a value of <a>AddNamedRangeResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>anrrNamedRange</a></li>
--   </ul>
addNamedRangeResponse :: AddNamedRangeResponse

-- | The named range to add.
anrrNamedRange :: Lens' AddNamedRangeResponse (Maybe NamedRange)

-- | The result of adding a chart to a spreadsheet.
--   
--   <i>See:</i> <a>addChartResponse</a> smart constructor.
data AddChartResponse

-- | Creates a value of <a>AddChartResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acrChart</a></li>
--   </ul>
addChartResponse :: AddChartResponse

-- | The newly added chart.
acrChart :: Lens' AddChartResponse (Maybe EmbeddedChart)

-- | Updates a chart's specifications. (This does not move or resize a
--   chart. To move or resize a chart, use
--   UpdateEmbeddedObjectPositionRequest.)
--   
--   <i>See:</i> <a>updateChartSpecRequest</a> smart constructor.
data UpdateChartSpecRequest

-- | Creates a value of <a>UpdateChartSpecRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucsrSpec</a></li>
--   <li><a>ucsrChartId</a></li>
--   </ul>
updateChartSpecRequest :: UpdateChartSpecRequest

-- | The specification to apply to the chart.
ucsrSpec :: Lens' UpdateChartSpecRequest (Maybe ChartSpec)

-- | The ID of the chart to update.
ucsrChartId :: Lens' UpdateChartSpecRequest (Maybe Int32)

-- | Sets the basic filter associated with a sheet.
--   
--   <i>See:</i> <a>setBasicFilterRequest</a> smart constructor.
data SetBasicFilterRequest

-- | Creates a value of <a>SetBasicFilterRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sbfrFilter</a></li>
--   </ul>
setBasicFilterRequest :: SetBasicFilterRequest

-- | The filter to set.
sbfrFilter :: Lens' SetBasicFilterRequest (Maybe BasicFilter)

-- | Properties of a grid.
--   
--   <i>See:</i> <a>gridProperties</a> smart constructor.
data GridProperties

-- | Creates a value of <a>GridProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gpFrozenColumnCount</a></li>
--   <li><a>gpColumnCount</a></li>
--   <li><a>gpHideGridlines</a></li>
--   <li><a>gpFrozenRowCount</a></li>
--   <li><a>gpRowCount</a></li>
--   </ul>
gridProperties :: GridProperties

-- | The number of columns that are frozen in the grid.
gpFrozenColumnCount :: Lens' GridProperties (Maybe Int32)

-- | The number of columns in the grid.
gpColumnCount :: Lens' GridProperties (Maybe Int32)

-- | True if the grid isn't showing gridlines in the UI.
gpHideGridlines :: Lens' GridProperties (Maybe Bool)

-- | The number of rows that are frozen in the grid.
gpFrozenRowCount :: Lens' GridProperties (Maybe Int32)

-- | The number of rows in the grid.
gpRowCount :: Lens' GridProperties (Maybe Int32)

-- | How a hyperlink, if it exists, should be displayed in the cell.
data CellFormatHyperlinkDisplayType

-- | <tt>HYPERLINK_DISPLAY_TYPE_UNSPECIFIED</tt> The default value: the
--   hyperlink is rendered. Do not use this.
HyperlinkDisplayTypeUnspecified :: CellFormatHyperlinkDisplayType

-- | <tt>LINKED</tt> A hyperlink should be explicitly rendered.
Linked :: CellFormatHyperlinkDisplayType

-- | <tt>PLAIN_TEXT</tt> A hyperlink should not be rendered.
PlainText :: CellFormatHyperlinkDisplayType

-- | 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.
--   
--   <i>See:</i> <a>basicFilterCriteria</a> smart constructor.
data BasicFilterCriteria

-- | Creates a value of <a>BasicFilterCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bfcAddtional</a></li>
--   </ul>
basicFilterCriteria :: HashMap Text FilterCriteria -> BasicFilterCriteria
bfcAddtional :: Lens' BasicFilterCriteria (HashMap Text FilterCriteria)

-- | Adds a new banded range to the spreadsheet.
--   
--   <i>See:</i> <a>addBandingRequest</a> smart constructor.
data AddBandingRequest

-- | Creates a value of <a>AddBandingRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>abrBandedRange</a></li>
--   </ul>
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.)
abrBandedRange :: Lens' AddBandingRequest (Maybe BandedRange)

-- | Updates properties of dimensions within the specified range.
--   
--   <i>See:</i> <a>updateDimensionPropertiesRequest</a> smart constructor.
data UpdateDimensionPropertiesRequest

-- | Creates a value of <a>UpdateDimensionPropertiesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udprRange</a></li>
--   <li><a>udprFields</a></li>
--   <li><a>udprProperties</a></li>
--   </ul>
updateDimensionPropertiesRequest :: UpdateDimensionPropertiesRequest

-- | The rows or columns to update.
udprRange :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionRange)

-- | The fields that should be updated. At least one field must be
--   specified. The root `properties` is implied and should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
udprFields :: Lens' UpdateDimensionPropertiesRequest (Maybe FieldMask)

-- | Properties to update.
udprProperties :: Lens' UpdateDimensionPropertiesRequest (Maybe DimensionProperties)

-- | An optional mapping of filters per source column offset. The filters
--   will be applied before aggregating data into the pivot table. The
--   map's key is the column offset of the source range that you want to
--   filter, and the value is the criteria for that column. For example, if
--   the source was `C10:E15`, a key of `0` will have the filter for column
--   `C`, whereas the key `1` is for column `D`.
--   
--   <i>See:</i> <a>pivotTableCriteria</a> smart constructor.
data PivotTableCriteria

-- | Creates a value of <a>PivotTableCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptcAddtional</a></li>
--   </ul>
pivotTableCriteria :: HashMap Text PivotFilterCriteria -> PivotTableCriteria
ptcAddtional :: Lens' PivotTableCriteria (HashMap Text PivotFilterCriteria)

-- | Fills in more data based on existing data.
--   
--   <i>See:</i> <a>autoFillRequest</a> smart constructor.
data AutoFillRequest

-- | Creates a value of <a>AutoFillRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>afrSourceAndDestination</a></li>
--   <li><a>afrUseAlternateSeries</a></li>
--   <li><a>afrRange</a></li>
--   </ul>
autoFillRequest :: AutoFillRequest

-- | 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)

-- | 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)

-- | 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)

-- | Duplicates the contents of a sheet.
--   
--   <i>See:</i> <a>duplicateSheetRequest</a> smart constructor.
data DuplicateSheetRequest

-- | Creates a value of <a>DuplicateSheetRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrNewSheetName</a></li>
--   <li><a>dsrInsertSheetIndex</a></li>
--   <li><a>dsrSourceSheetId</a></li>
--   <li><a>dsrNewSheetId</a></li>
--   </ul>
duplicateSheetRequest :: DuplicateSheetRequest

-- | The name of the new sheet. If empty, a new name is chosen for you.
dsrNewSheetName :: Lens' DuplicateSheetRequest (Maybe Text)

-- | 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)

-- | The sheet to duplicate.
dsrSourceSheetId :: Lens' DuplicateSheetRequest (Maybe 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.
dsrNewSheetId :: Lens' DuplicateSheetRequest (Maybe Int32)

-- | The result of a filter view being duplicated.
--   
--   <i>See:</i> <a>duplicateFilterViewResponse</a> smart constructor.
data DuplicateFilterViewResponse

-- | Creates a value of <a>DuplicateFilterViewResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfvrFilter</a></li>
--   </ul>
duplicateFilterViewResponse :: DuplicateFilterViewResponse

-- | The newly created filter.
dfvrFilter :: Lens' DuplicateFilterViewResponse (Maybe FilterView)

-- | The type of sheet. Defaults to GRID. This field cannot be changed once
--   set.
data SheetPropertiesSheetType

-- | <tt>SHEET_TYPE_UNSPECIFIED</tt> Default value, do not use.
SheetTypeUnspecified :: SheetPropertiesSheetType

-- | <tt>GRID</tt> The sheet is a grid.
Grid :: SheetPropertiesSheetType

-- | <tt>OBJECT</tt> The sheet has no grid and instead has an object like a
--   chart or image.
Object :: SheetPropertiesSheetType

-- | The request for updating more than one range of values in a
--   spreadsheet.
--   
--   <i>See:</i> <a>batchUpdateValuesRequest</a> smart constructor.
data BatchUpdateValuesRequest

-- | Creates a value of <a>BatchUpdateValuesRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>buvrData</a></li>
--   <li><a>buvrValueInputOption</a></li>
--   <li><a>buvrIncludeValuesInResponse</a></li>
--   <li><a>buvrResponseDateTimeRenderOption</a></li>
--   <li><a>buvrResponseValueRenderOption</a></li>
--   </ul>
batchUpdateValuesRequest :: BatchUpdateValuesRequest

-- | The new values to apply to the spreadsheet.
buvrData :: Lens' BatchUpdateValuesRequest [ValueRange]

-- | How the input data should be interpreted.
buvrValueInputOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestValueInputOption)

-- | 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)

-- | 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)

-- | Determines how values in the response should be rendered. The default
--   render option is ValueRenderOption.FORMATTED_VALUE.
buvrResponseValueRenderOption :: Lens' BatchUpdateValuesRequest (Maybe BatchUpdateValuesRequestResponseValueRenderOption)

-- | Adds a chart to a sheet in the spreadsheet.
--   
--   <i>See:</i> <a>addChartRequest</a> smart constructor.
data AddChartRequest

-- | Creates a value of <a>AddChartRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aChart</a></li>
--   </ul>
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 a chart that already exists.)
aChart :: Lens' AddChartRequest (Maybe EmbeddedChart)

-- | A named range.
--   
--   <i>See:</i> <a>namedRange</a> smart constructor.
data NamedRange

-- | Creates a value of <a>NamedRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nrNamedRangeId</a></li>
--   <li><a>nrName</a></li>
--   <li><a>nrRange</a></li>
--   </ul>
namedRange :: NamedRange

-- | The ID of the named range.
nrNamedRangeId :: Lens' NamedRange (Maybe Text)

-- | The name of the named range.
nrName :: Lens' NamedRange (Maybe Text)

-- | The range this represents.
nrRange :: Lens' NamedRange (Maybe GridRange)

-- | Merges all cells in the range.
--   
--   <i>See:</i> <a>mergeCellsRequest</a> smart constructor.
data MergeCellsRequest

-- | Creates a value of <a>MergeCellsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcrMergeType</a></li>
--   <li><a>mcrRange</a></li>
--   </ul>
mergeCellsRequest :: MergeCellsRequest

-- | How the cells should be merged.
mcrMergeType :: Lens' MergeCellsRequest (Maybe MergeCellsRequestMergeType)

-- | The range of cells to merge.
mcrRange :: Lens' MergeCellsRequest (Maybe GridRange)

-- | How the cells should be merged.
data MergeCellsRequestMergeType

-- | <tt>MERGE_ALL</tt> Create a single merge from the range
MergeAll :: MergeCellsRequestMergeType

-- | <tt>MERGE_COLUMNS</tt> Create a merge for each column in the range
MergeColumns :: MergeCellsRequestMergeType

-- | <tt>MERGE_ROWS</tt> Create a merge for each row in the range
MergeRows :: MergeCellsRequestMergeType

-- | The horizontal alignment of the value in the cell.
data CellFormatHorizontalAlignment

-- | <tt>HORIZONTAL_ALIGN_UNSPECIFIED</tt> The horizontal alignment is not
--   specified. Do not use this.
HorizontalAlignUnspecified :: CellFormatHorizontalAlignment

-- | <tt>LEFT</tt> The text is explicitly aligned to the left of the cell.
Left' :: CellFormatHorizontalAlignment

-- | <tt>CENTER</tt> The text is explicitly aligned to the center of the
--   cell.
Center :: CellFormatHorizontalAlignment

-- | <tt>RIGHT</tt> The text is explicitly aligned to the right of the
--   cell.
Right' :: CellFormatHorizontalAlignment

-- | A border along a cell.
--   
--   <i>See:</i> <a>bOrder</a> smart constructor.
data BOrder

-- | Creates a value of <a>BOrder</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>boStyle</a></li>
--   <li><a>boColor</a></li>
--   <li><a>boWidth</a></li>
--   </ul>
bOrder :: BOrder

-- | The style of the border.
boStyle :: Lens' BOrder (Maybe BOrderStyle)

-- | The color of the border.
boColor :: Lens' BOrder (Maybe Color)

-- | The width of the border, in pixels. Deprecated; the width is
--   determined by the "style" field.
boWidth :: Lens' BOrder (Maybe Int32)

-- | The kinds of value that a cell in a spreadsheet can have.
--   
--   <i>See:</i> <a>extendedValue</a> smart constructor.
data ExtendedValue

-- | Creates a value of <a>ExtendedValue</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>evBoolValue</a></li>
--   <li><a>evNumberValue</a></li>
--   <li><a>evErrorValue</a></li>
--   <li><a>evStringValue</a></li>
--   <li><a>evFormulaValue</a></li>
--   </ul>
extendedValue :: ExtendedValue

-- | Represents a boolean value.
evBoolValue :: Lens' ExtendedValue (Maybe Bool)

-- | Represents a double value. Note: Dates, Times and DateTimes are
--   represented as doubles in "serial number" format.
evNumberValue :: Lens' ExtendedValue (Maybe Double)

-- | Represents an error. This field is read-only.
evErrorValue :: Lens' ExtendedValue (Maybe ErrorValue)

-- | 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)

-- | Represents a formula.
evFormulaValue :: Lens' ExtendedValue (Maybe Text)

-- | Adds a named range to the spreadsheet.
--   
--   <i>See:</i> <a>addNamedRangeRequest</a> smart constructor.
data AddNamedRangeRequest

-- | Creates a value of <a>AddNamedRangeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aNamedRange</a></li>
--   </ul>
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.)
aNamedRange :: Lens' AddNamedRangeRequest (Maybe NamedRange)

-- | Criteria for showing/hiding rows in a pivot table.
--   
--   <i>See:</i> <a>pivotFilterCriteria</a> smart constructor.
data PivotFilterCriteria

-- | Creates a value of <a>PivotFilterCriteria</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pfcVisibleValues</a></li>
--   </ul>
pivotFilterCriteria :: PivotFilterCriteria

-- | Values that should be included. Values not listed here are excluded.
pfcVisibleValues :: Lens' PivotFilterCriteria [Text]

-- | 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.
--   
--   <i>See:</i> <a>dimensionRange</a> smart constructor.
data DimensionRange

-- | Creates a value of <a>DimensionRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drDimension</a></li>
--   <li><a>drEndIndex</a></li>
--   <li><a>drSheetId</a></li>
--   <li><a>drStartIndex</a></li>
--   </ul>
dimensionRange :: DimensionRange

-- | The dimension of the span.
drDimension :: Lens' DimensionRange (Maybe DimensionRangeDimension)

-- | The end (exclusive) of the span, or not set if unbounded.
drEndIndex :: Lens' DimensionRange (Maybe Int32)

-- | The sheet this span is on.
drSheetId :: Lens' DimensionRange (Maybe Int32)

-- | The start (inclusive) of the span, or not set if unbounded.
drStartIndex :: Lens' DimensionRange (Maybe Int32)

-- | Updates properties of a spreadsheet.
--   
--   <i>See:</i> <a>updateSpreadsheetPropertiesRequest</a> smart
--   constructor.
data UpdateSpreadsheetPropertiesRequest

-- | Creates a value of <a>UpdateSpreadsheetPropertiesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uFields</a></li>
--   <li><a>uProperties</a></li>
--   </ul>
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.
uFields :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe FieldMask)

-- | The properties to update.
uProperties :: Lens' UpdateSpreadsheetPropertiesRequest (Maybe SpreadsheetProperties)

-- | The result of adding a new protected range.
--   
--   <i>See:</i> <a>addProtectedRangeResponse</a> smart constructor.
data AddProtectedRangeResponse

-- | Creates a value of <a>AddProtectedRangeResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aProtectedRange</a></li>
--   </ul>
addProtectedRangeResponse :: AddProtectedRangeResponse

-- | The newly added protected range.
aProtectedRange :: Lens' AddProtectedRangeResponse (Maybe ProtectedRange)

-- | Appends rows or columns to the end of a sheet.
--   
--   <i>See:</i> <a>appendDimensionRequest</a> smart constructor.
data AppendDimensionRequest

-- | Creates a value of <a>AppendDimensionRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adrLength</a></li>
--   <li><a>adrDimension</a></li>
--   <li><a>adrSheetId</a></li>
--   </ul>
appendDimensionRequest :: AppendDimensionRequest

-- | The number of rows or columns to append.
adrLength :: Lens' AppendDimensionRequest (Maybe Int32)

-- | Whether rows or columns should be appended.
adrDimension :: Lens' AppendDimensionRequest (Maybe AppendDimensionRequestDimension)

-- | The sheet to append rows or columns to.
adrSheetId :: Lens' AppendDimensionRequest (Maybe Int32)

-- | The definition of how a value in a pivot table should be calculated.
--   
--   <i>See:</i> <a>pivotValue</a> smart constructor.
data PivotValue

-- | Creates a value of <a>PivotValue</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pvSourceColumnOffSet</a></li>
--   <li><a>pvFormula</a></li>
--   <li><a>pvName</a></li>
--   <li><a>pvSummarizeFunction</a></li>
--   </ul>
pivotValue :: PivotValue

-- | 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)

-- | A custom formula to calculate the value. The formula must start with
--   an `=` character.
pvFormula :: Lens' PivotValue (Maybe Text)

-- | A name to use for the value. This is only used if formula was set.
--   Otherwise, the column name is used.
pvName :: Lens' PivotValue (Maybe Text)

-- | 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)

-- | Unmerges cells in the given range.
--   
--   <i>See:</i> <a>unmergeCellsRequest</a> smart constructor.
data UnmergeCellsRequest

-- | Creates a value of <a>UnmergeCellsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucrRange</a></li>
--   </ul>
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.
ucrRange :: Lens' UnmergeCellsRequest (Maybe GridRange)

-- | Deletes the requested sheet.
--   
--   <i>See:</i> <a>deleteSheetRequest</a> smart constructor.
data DeleteSheetRequest

-- | Creates a value of <a>DeleteSheetRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrSheetId</a></li>
--   </ul>
deleteSheetRequest :: DeleteSheetRequest

-- | The ID of the sheet to delete.
dsrSheetId :: Lens' DeleteSheetRequest (Maybe Int32)

-- | The type of condition.
data BooleanConditionType

-- | <tt>CONDITION_TYPE_UNSPECIFIED</tt> The default value, do not use.
ConditionTypeUnspecified :: BooleanConditionType

-- | <tt>NUMBER_GREATER</tt> The cell's value must be greater than the
--   condition's value. Supported by data validation, conditional
--   formatting and filters. Requires a single ConditionValue.
NumberGreater :: BooleanConditionType

-- | <tt>NUMBER_GREATER_THAN_EQ</tt> 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.
NumberGreaterThanEQ :: BooleanConditionType

-- | <tt>NUMBER_LESS</tt> The cell's value must be less than the
--   condition's value. Supported by data validation, conditional
--   formatting and filters. Requires a single ConditionValue.
NumberLess :: BooleanConditionType

-- | <tt>NUMBER_LESS_THAN_EQ</tt> 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.
NumberLessThanEQ :: BooleanConditionType

-- | <tt>NUMBER_EQ</tt> The cell's value must be equal to the condition's
--   value. Supported by data validation, conditional formatting and
--   filters. Requires a single ConditionValue.
NumberEQ :: BooleanConditionType

-- | <tt>NUMBER_NOT_EQ</tt> 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.
NumberNotEQ :: BooleanConditionType

-- | <tt>NUMBER_BETWEEN</tt> The cell's value must be between the two
--   condition values. Supported by data validation, conditional formatting
--   and filters. Requires exactly two ConditionValues.
NumberBetween :: BooleanConditionType

-- | <tt>NUMBER_NOT_BETWEEN</tt> The cell's value must not be between the
--   two condition values. Supported by data validation, conditional
--   formatting and filters. Requires exactly two ConditionValues.
NumberNotBetween :: BooleanConditionType

-- | <tt>TEXT_CONTAINS</tt> The cell's value must contain the condition's
--   value. Supported by data validation, conditional formatting and
--   filters. Requires a single ConditionValue.
TextContains :: BooleanConditionType

-- | <tt>TEXT_NOT_CONTAINS</tt> The cell's value must not contain the
--   condition's value. Supported by data validation, conditional
--   formatting and filters. Requires a single ConditionValue.
TextNotContains :: BooleanConditionType

-- | <tt>TEXT_STARTS_WITH</tt> The cell's value must start with the
--   condition's value. Supported by conditional formatting and filters.
--   Requires a single ConditionValue.
TextStartsWith :: BooleanConditionType

-- | <tt>TEXT_ENDS_WITH</tt> The cell's value must end with the condition's
--   value. Supported by conditional formatting and filters. Requires a
--   single ConditionValue.
TextEndsWith :: BooleanConditionType

-- | <tt>TEXT_EQ</tt> The cell's value must be exactly the condition's
--   value. Supported by data validation, conditional formatting and
--   filters. Requires a single ConditionValue.
TextEQ :: BooleanConditionType

-- | <tt>TEXT_IS_EMAIL</tt> The cell's value must be a valid email address.
--   Supported by data validation. Requires no ConditionValues.
TextIsEmail :: BooleanConditionType

-- | <tt>TEXT_IS_URL</tt> The cell's value must be a valid URL. Supported
--   by data validation. Requires no ConditionValues.
TextIsURL :: BooleanConditionType

-- | <tt>DATE_EQ</tt> 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.
DateEQ :: BooleanConditionType

-- | <tt>DATE_BEFORE</tt> 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.
DateBefore :: BooleanConditionType

-- | <tt>DATE_AFTER</tt> 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.
DateAfter :: BooleanConditionType

-- | <tt>DATE_ON_OR_BEFORE</tt> 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.
DateOnOrBefore :: BooleanConditionType

-- | <tt>DATE_ON_OR_AFTER</tt> 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.
DateOnOrAfter :: BooleanConditionType

-- | <tt>DATE_BETWEEN</tt> The cell's value must be between the dates of
--   the two condition values. Supported by data validation. Requires
--   exactly two ConditionValues.
DateBetween :: BooleanConditionType

-- | <tt>DATE_NOT_BETWEEN</tt> The cell's value must be outside the dates
--   of the two condition values. Supported by data validation. Requires
--   exactly two ConditionValues.
DateNotBetween :: BooleanConditionType

-- | <tt>DATE_IS_VALID</tt> The cell's value must be a date. Supported by
--   data validation. Requires no ConditionValues.
DateIsValid :: BooleanConditionType

-- | <tt>ONE_OF_RANGE</tt> 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.
OneOfRange :: BooleanConditionType

-- | <tt>ONE_OF_LIST</tt> The cell's value must in the list of condition
--   values. Supported by data validation. Supports any number of condition
--   values, one per item in the list. Formulas are not supported in the
--   values.
OneOfList :: BooleanConditionType

-- | <tt>BLANK</tt> The cell's value must be empty. Supported by
--   conditional formatting and filters. Requires no ConditionValues.
Blank :: BooleanConditionType

-- | <tt>NOT_BLANK</tt> The cell's value must not be empty. Supported by
--   conditional formatting and filters. Requires no ConditionValues.
NotBlank :: BooleanConditionType

-- | <tt>CUSTOM_FORMULA</tt> The condition's formula must evaluate to true.
--   Supported by data validation, conditional formatting and filters.
--   Requires a single ConditionValue.
CustomFormula :: BooleanConditionType

-- | A banded (alternating colors) range in a sheet.
--   
--   <i>See:</i> <a>bandedRange</a> smart constructor.
data BandedRange

-- | Creates a value of <a>BandedRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>brBandedRangeId</a></li>
--   <li><a>brRowProperties</a></li>
--   <li><a>brRange</a></li>
--   <li><a>brColumnProperties</a></li>
--   </ul>
bandedRange :: BandedRange

-- | The id of the banded range.
brBandedRangeId :: Lens' BandedRange (Maybe Int32)

-- | Properties for row bands. These properties will be applied on a
--   row-by-row basis throughout all the rows in the range. At least one of
--   row_properties or column_properties must be specified.
brRowProperties :: Lens' BandedRange (Maybe BandingProperties)

-- | The range over which these properties are applied.
brRange :: Lens' BandedRange (Maybe GridRange)

-- | Properties for column bands. These properties will be applied on a
--   column- by-column basis throughout all the columns in the range. At
--   least one of row_properties or column_properties must be specified.
brColumnProperties :: Lens' BandedRange (Maybe BandingProperties)

-- | 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.
--   
--   <i>See:</i> <a>updateBOrdersRequest</a> smart constructor.
data UpdateBOrdersRequest

-- | Creates a value of <a>UpdateBOrdersRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uborBottom</a></li>
--   <li><a>uborInnerHorizontal</a></li>
--   <li><a>uborLeft</a></li>
--   <li><a>uborInnerVertical</a></li>
--   <li><a>uborRange</a></li>
--   <li><a>uborRight</a></li>
--   <li><a>uborTop</a></li>
--   </ul>
updateBOrdersRequest :: UpdateBOrdersRequest

-- | The border to put at the bottom of the range.
uborBottom :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The horizontal border to put within the range.
uborInnerHorizontal :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The border to put at the left of the range.
uborLeft :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The vertical border to put within the range.
uborInnerVertical :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The range whose borders should be updated.
uborRange :: Lens' UpdateBOrdersRequest (Maybe GridRange)

-- | The border to put at the right of the range.
uborRight :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | The border to put at the top of the range.
uborTop :: Lens' UpdateBOrdersRequest (Maybe BOrder)

-- | 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

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
VRMDDimensionUnspecified :: ValueRangeMajorDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
VRMDRows :: ValueRangeMajorDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
VRMDColumns :: ValueRangeMajorDimension

-- | The order the values in this group should be sorted.
data PivotGroupSortOrder

-- | <tt>SORT_ORDER_UNSPECIFIED</tt> Default value, do not use this.
PGSOSortOrderUnspecified :: PivotGroupSortOrder

-- | <tt>ASCENDING</tt> Sort ascending.
PGSOAscending :: PivotGroupSortOrder

-- | <tt>DESCENDING</tt> Sort descending.
PGSODescending :: PivotGroupSortOrder

-- | The type of the chart.
data BasicChartSpecChartType

-- | <tt>BASIC_CHART_TYPE_UNSPECIFIED</tt> Default value, do not use.
BasicChartTypeUnspecified :: BasicChartSpecChartType

-- | <tt>BAR</tt> A <a>bar chart</a>.
Bar :: BasicChartSpecChartType

-- | <tt>LINE</tt> A <a>line chart</a>.
Line :: BasicChartSpecChartType

-- | <tt>AREA</tt> An <a>area chart</a>.
Area :: BasicChartSpecChartType

-- | <tt>COLUMN</tt> A <a>column chart</a>.
Column :: BasicChartSpecChartType

-- | <tt>SCATTER</tt> A <a>scatter chart</a>.
Scatter :: BasicChartSpecChartType

-- | <tt>COMBO</tt> A <a>combo chart</a>.
Combo :: BasicChartSpecChartType

-- | A chart embedded in a sheet.
--   
--   <i>See:</i> <a>embeddedChart</a> smart constructor.
data EmbeddedChart

-- | Creates a value of <a>EmbeddedChart</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ecSpec</a></li>
--   <li><a>ecPosition</a></li>
--   <li><a>ecChartId</a></li>
--   </ul>
embeddedChart :: EmbeddedChart

-- | The specification of the chart.
ecSpec :: Lens' EmbeddedChart (Maybe ChartSpec)

-- | The position of the chart.
ecPosition :: Lens' EmbeddedChart (Maybe EmbeddedObjectPosition)

-- | The ID of the chart.
ecChartId :: Lens' EmbeddedChart (Maybe Int32)

-- | Data about each cell in a row.
--   
--   <i>See:</i> <a>rowData</a> smart constructor.
data RowData

-- | Creates a value of <a>RowData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdValues</a></li>
--   </ul>
rowData :: RowData

-- | The values in the row, one per column.
rdValues :: Lens' RowData [CellData]

-- | The editors of a protected range.
--   
--   <i>See:</i> <a>editors</a> smart constructor.
data Editors

-- | Creates a value of <a>Editors</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eGroups</a></li>
--   <li><a>eUsers</a></li>
--   <li><a>eDomainUsersCanEdit</a></li>
--   </ul>
editors :: Editors

-- | The email addresses of groups with edit access to the protected range.
eGroups :: Lens' Editors [Text]

-- | The email addresses of users with edit access to the protected range.
eUsers :: Lens' Editors [Text]

-- | 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)

-- | V1 error format.
data Xgafv

-- | <tt>1</tt> v1 error format
X1 :: Xgafv

-- | <tt>2</tt> v2 error format
X2 :: Xgafv

-- | A pivot table.
--   
--   <i>See:</i> <a>pivotTable</a> smart constructor.
data PivotTable

-- | Creates a value of <a>PivotTable</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptValues</a></li>
--   <li><a>ptValueLayout</a></li>
--   <li><a>ptRows</a></li>
--   <li><a>ptSource</a></li>
--   <li><a>ptColumns</a></li>
--   <li><a>ptCriteria</a></li>
--   </ul>
pivotTable :: PivotTable

-- | A list of values to include in the pivot table.
ptValues :: Lens' PivotTable [PivotValue]

-- | Whether values should be listed horizontally (as columns) or
--   vertically (as rows).
ptValueLayout :: Lens' PivotTable (Maybe PivotTableValueLayout)

-- | Each row grouping in the pivot table.
ptRows :: Lens' PivotTable [PivotGroup]

-- | The range the pivot table is reading data from.
ptSource :: Lens' PivotTable (Maybe GridRange)

-- | Each column grouping in the pivot table.
ptColumns :: Lens' PivotTable [PivotGroup]

-- | An optional mapping of filters per source column offset. The filters
--   will be applied before aggregating data into the pivot table. The
--   map's key is the column offset of the source range that you want to
--   filter, and the value is the criteria for that column. For example, if
--   the source was `C10:E15`, a key of `0` will have the filter for column
--   `C`, whereas the key `1` is for column `D`.
ptCriteria :: Lens' PivotTable (Maybe PivotTableCriteria)

-- | The position of an embedded object such as a chart.
--   
--   <i>See:</i> <a>embeddedObjectPosition</a> smart constructor.
data EmbeddedObjectPosition

-- | Creates a value of <a>EmbeddedObjectPosition</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eopOverlayPosition</a></li>
--   <li><a>eopSheetId</a></li>
--   <li><a>eopNewSheet</a></li>
--   </ul>
embeddedObjectPosition :: EmbeddedObjectPosition

-- | The position at which the object is overlaid on top of a grid.
eopOverlayPosition :: Lens' EmbeddedObjectPosition (Maybe OverlayPosition)

-- | 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)

-- | If true, the embedded object will be put on a new sheet whose ID is
--   chosen for you. Used only when writing.
eopNewSheet :: Lens' EmbeddedObjectPosition (Maybe Bool)

-- | The default filter associated with a sheet.
--   
--   <i>See:</i> <a>basicFilter</a> smart constructor.
data BasicFilter

-- | Creates a value of <a>BasicFilter</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bfSortSpecs</a></li>
--   <li><a>bfRange</a></li>
--   <li><a>bfCriteria</a></li>
--   </ul>
basicFilter :: BasicFilter

-- | The sort order per column. Later specifications are used when values
--   are equal in the earlier specifications.
bfSortSpecs :: Lens' BasicFilter [SortSpec]

-- | The range the filter covers.
bfRange :: Lens' BasicFilter (Maybe GridRange)

-- | 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)

-- | Splits a column of text into multiple columns, based on a delimiter in
--   each cell.
--   
--   <i>See:</i> <a>textToColumnsRequest</a> smart constructor.
data TextToColumnsRequest

-- | Creates a value of <a>TextToColumnsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ttcrDelimiterType</a></li>
--   <li><a>ttcrSource</a></li>
--   <li><a>ttcrDelimiter</a></li>
--   </ul>
textToColumnsRequest :: TextToColumnsRequest

-- | The delimiter type to use.
ttcrDelimiterType :: Lens' TextToColumnsRequest (Maybe TextToColumnsRequestDelimiterType)

-- | The source data range. This must span exactly one column.
ttcrSource :: Lens' TextToColumnsRequest (Maybe GridRange)

-- | The delimiter to use. Used only if delimiterType is CUSTOM.
ttcrDelimiter :: Lens' TextToColumnsRequest (Maybe Text)

-- | The amount of time to wait before volatile functions are recalculated.
data SpreadsheetPropertiesAutoRecalc

-- | <tt>RECALCULATION_INTERVAL_UNSPECIFIED</tt> Default value. This value
--   must not be used.
RecalculationIntervalUnspecified :: SpreadsheetPropertiesAutoRecalc

-- | <tt>ON_CHANGE</tt> Volatile functions are updated on every change.
OnChange :: SpreadsheetPropertiesAutoRecalc

-- | <tt>MINUTE</tt> Volatile functions are updated on every change and
--   every minute.
Minute :: SpreadsheetPropertiesAutoRecalc

-- | <tt>HOUR</tt> Volatile functions are updated on every change and
--   hourly.
Hour :: SpreadsheetPropertiesAutoRecalc

-- | How that data should be oriented when pasting.
data CopyPasteRequestPasteOrientation

-- | <tt>NORMAL</tt> Paste normally.
Normal :: CopyPasteRequestPasteOrientation

-- | <tt>TRANSPOSE</tt> Paste transposed, where all rows become columns and
--   vice versa.
Transpose :: CopyPasteRequestPasteOrientation

-- | The request for updating any aspect of a spreadsheet.
--   
--   <i>See:</i> <a>batchUpdateSpreadsheetRequest</a> smart constructor.
data BatchUpdateSpreadsheetRequest

-- | Creates a value of <a>BatchUpdateSpreadsheetRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>busrResponseIncludeGridData</a></li>
--   <li><a>busrResponseRanges</a></li>
--   <li><a>busrRequests</a></li>
--   <li><a>busrIncludeSpreadsheetInResponse</a></li>
--   </ul>
batchUpdateSpreadsheetRequest :: BatchUpdateSpreadsheetRequest

-- | True if grid data should be returned. Meaningful only if if
--   include_spreadsheet_response is 'true'. This parameter is ignored if a
--   field mask was set in the request.
busrResponseIncludeGridData :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)

-- | Limits the ranges included in the response spreadsheet. Meaningful
--   only if include_spreadsheet_response is 'true'.
busrResponseRanges :: Lens' BatchUpdateSpreadsheetRequest [Text]

-- | A list of updates to apply to the spreadsheet.
busrRequests :: Lens' BatchUpdateSpreadsheetRequest [Request']

-- | Determines if the update response should include the spreadsheet
--   resource.
busrIncludeSpreadsheetInResponse :: Lens' BatchUpdateSpreadsheetRequest (Maybe Bool)

-- | How the data should be pasted.
data PasteDataRequestType

-- | <tt>PASTE_NORMAL</tt> Paste values, formulas, formats, and merges.
PDRTPasteNormal :: PasteDataRequestType

-- | <tt>PASTE_VALUES</tt> Paste the values ONLY without formats, formulas,
--   or merges.
PDRTPasteValues :: PasteDataRequestType

-- | <tt>PASTE_FORMAT</tt> Paste the format and data validation only.
PDRTPasteFormat :: PasteDataRequestType

-- | <tt>PASTE_NO_BORDERS</tt> Like PASTE_NORMAL but without borders.
PDRTPasteNoBOrders :: PasteDataRequestType

-- | <tt>PASTE_FORMULA</tt> Paste the formulas only.
PDRTPasteFormula :: PasteDataRequestType

-- | <tt>PASTE_DATA_VALIDATION</tt> Paste the data validation only.
PDRTPasteDataValidation :: PasteDataRequestType

-- | <tt>PASTE_CONDITIONAL_FORMATTING</tt> Paste the conditional formatting
--   rules only.
PDRTPasteConditionalFormatting :: PasteDataRequestType

-- | The response when updating a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>updateValuesResponse</a> smart constructor.
data UpdateValuesResponse

-- | Creates a value of <a>UpdateValuesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uvrUpdatedCells</a></li>
--   <li><a>uvrSpreadsheetId</a></li>
--   <li><a>uvrUpdatedRows</a></li>
--   <li><a>uvrUpdatedRange</a></li>
--   <li><a>uvrUpdatedData</a></li>
--   <li><a>uvrUpdatedColumns</a></li>
--   </ul>
updateValuesResponse :: UpdateValuesResponse

-- | The number of cells updated.
uvrUpdatedCells :: Lens' UpdateValuesResponse (Maybe Int32)

-- | The spreadsheet the updates were applied to.
uvrSpreadsheetId :: Lens' UpdateValuesResponse (Maybe Text)

-- | The number of rows where at least one cell in the row was updated.
uvrUpdatedRows :: Lens' UpdateValuesResponse (Maybe Int32)

-- | The range (in A1 notation) that updates were applied to.
uvrUpdatedRange :: Lens' UpdateValuesResponse (Maybe Text)

-- | 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)

-- | The number of columns where at least one cell in the column was
--   updated.
uvrUpdatedColumns :: Lens' UpdateValuesResponse (Maybe Int32)

-- | The request to copy a sheet across spreadsheets.
--   
--   <i>See:</i> <a>copySheetToAnotherSpreadsheetRequest</a> smart
--   constructor.
data CopySheetToAnotherSpreadsheetRequest

-- | Creates a value of <a>CopySheetToAnotherSpreadsheetRequest</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cstasrDestinationSpreadsheetId</a></li>
--   </ul>
copySheetToAnotherSpreadsheetRequest :: CopySheetToAnotherSpreadsheetRequest

-- | The ID of the spreadsheet to copy the sheet to.
cstasrDestinationSpreadsheetId :: Lens' CopySheetToAnotherSpreadsheetRequest (Maybe Text)

-- | Adds a filter view.
--   
--   <i>See:</i> <a>addFilterViewRequest</a> smart constructor.
data AddFilterViewRequest

-- | Creates a value of <a>AddFilterViewRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aFilter</a></li>
--   </ul>
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.)
aFilter :: Lens' AddFilterViewRequest (Maybe FilterView)

-- | Metadata about a value in a pivot grouping.
--   
--   <i>See:</i> <a>pivotGroupValueMetadata</a> smart constructor.
data PivotGroupValueMetadata

-- | Creates a value of <a>PivotGroupValueMetadata</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgvmValue</a></li>
--   <li><a>pgvmCollapsed</a></li>
--   </ul>
pivotGroupValueMetadata :: PivotGroupValueMetadata

-- | The calculated value the metadata corresponds to. (Note that
--   formulaValue is not valid, because the values will be calculated.)
pgvmValue :: Lens' PivotGroupValueMetadata (Maybe ExtendedValue)

-- | True if the data corresponding to the value is collapsed.
pgvmCollapsed :: Lens' PivotGroupValueMetadata (Maybe Bool)

-- | The direction of the text in the cell.
data CellFormatTextDirection

-- | <tt>TEXT_DIRECTION_UNSPECIFIED</tt> The text direction is not
--   specified. Do not use this.
TextDirectionUnspecified :: CellFormatTextDirection

-- | <tt>LEFT_TO_RIGHT</tt> The text direction of left-to-right was set by
--   the user.
LeftToRight :: CellFormatTextDirection

-- | <tt>RIGHT_TO_LEFT</tt> The text direction of right-to-left was set by
--   the user.
RightToLeft :: CellFormatTextDirection

-- | 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

-- | <tt>BASIC_CHART_TYPE_UNSPECIFIED</tt> Default value, do not use.
BCSTBasicChartTypeUnspecified :: BasicChartSeriesType

-- | <tt>BAR</tt> A <a>bar chart</a>.
BCSTBar :: BasicChartSeriesType

-- | <tt>LINE</tt> A <a>line chart</a>.
BCSTLine :: BasicChartSeriesType

-- | <tt>AREA</tt> An <a>area chart</a>.
BCSTArea :: BasicChartSeriesType

-- | <tt>COLUMN</tt> A <a>column chart</a>.
BCSTColumn :: BasicChartSeriesType

-- | <tt>SCATTER</tt> A <a>scatter chart</a>.
BCSTScatter :: BasicChartSeriesType

-- | <tt>COMBO</tt> A <a>combo chart</a>.
BCSTCombo :: BasicChartSeriesType

-- | Updates all cells in a range with new data.
--   
--   <i>See:</i> <a>updateCellsRequest</a> smart constructor.
data UpdateCellsRequest

-- | Creates a value of <a>UpdateCellsRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>updStart</a></li>
--   <li><a>updRows</a></li>
--   <li><a>updRange</a></li>
--   <li><a>updFields</a></li>
--   </ul>
updateCellsRequest :: UpdateCellsRequest

-- | 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)

-- | The data to write.
updRows :: Lens' UpdateCellsRequest [RowData]

-- | 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)

-- | The fields of CellData that should be updated. At least one field must
--   be specified. The root is the CellData; 'row.values.' should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
updFields :: Lens' UpdateCellsRequest (Maybe FieldMask)

-- | The format of a cell.
--   
--   <i>See:</i> <a>cellFormat</a> smart constructor.
data CellFormat

-- | Creates a value of <a>CellFormat</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cfBOrders</a></li>
--   <li><a>cfVerticalAlignment</a></li>
--   <li><a>cfBackgRoundColor</a></li>
--   <li><a>cfHyperlinkDisplayType</a></li>
--   <li><a>cfWrapStrategy</a></li>
--   <li><a>cfNumberFormat</a></li>
--   <li><a>cfTextDirection</a></li>
--   <li><a>cfTextFormat</a></li>
--   <li><a>cfHorizontalAlignment</a></li>
--   <li><a>cfPadding</a></li>
--   </ul>
cellFormat :: CellFormat

-- | The borders of the cell.
cfBOrders :: Lens' CellFormat (Maybe BOrders)

-- | The vertical alignment of the value in the cell.
cfVerticalAlignment :: Lens' CellFormat (Maybe CellFormatVerticalAlignment)

-- | The background color of the cell.
cfBackgRoundColor :: Lens' CellFormat (Maybe Color)

-- | How a hyperlink, if it exists, should be displayed in the cell.
cfHyperlinkDisplayType :: Lens' CellFormat (Maybe CellFormatHyperlinkDisplayType)

-- | The wrap strategy for the value in the cell.
cfWrapStrategy :: Lens' CellFormat (Maybe CellFormatWrapStrategy)

-- | A format describing how number values should be represented to the
--   user.
cfNumberFormat :: Lens' CellFormat (Maybe NumberFormat)

-- | The direction of the text in the cell.
cfTextDirection :: Lens' CellFormat (Maybe CellFormatTextDirection)

-- | The format of the text in the cell (unless overridden by a format
--   run).
cfTextFormat :: Lens' CellFormat (Maybe TextFormat)

-- | The horizontal alignment of the value in the cell.
cfHorizontalAlignment :: Lens' CellFormat (Maybe CellFormatHorizontalAlignment)

-- | The padding of the cell.
cfPadding :: Lens' CellFormat (Maybe Padding)

-- | Deletes the protected range with the given ID.
--   
--   <i>See:</i> <a>deleteProtectedRangeRequest</a> smart constructor.
data DeleteProtectedRangeRequest

-- | Creates a value of <a>DeleteProtectedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dprrProtectedRangeId</a></li>
--   </ul>
deleteProtectedRangeRequest :: DeleteProtectedRangeRequest

-- | The ID of the protected range to delete.
dprrProtectedRangeId :: Lens' DeleteProtectedRangeRequest (Maybe Int32)

-- | Updates an existing protected range with the specified
--   protectedRangeId.
--   
--   <i>See:</i> <a>updateProtectedRangeRequest</a> smart constructor.
data UpdateProtectedRangeRequest

-- | Creates a value of <a>UpdateProtectedRangeRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uprrProtectedRange</a></li>
--   <li><a>uprrFields</a></li>
--   </ul>
updateProtectedRangeRequest :: UpdateProtectedRangeRequest

-- | The protected range to update with the new properties.
uprrProtectedRange :: Lens' UpdateProtectedRangeRequest (Maybe ProtectedRange)

-- | The fields that should be updated. At least one field must be
--   specified. The root `protectedRange` is implied and should not be
--   specified. A single `"*"` can be used as short-hand for listing every
--   field.
uprrFields :: Lens' UpdateProtectedRangeRequest (Maybe FieldMask)

-- | The result of adding a sheet.
--   
--   <i>See:</i> <a>addSheetResponse</a> smart constructor.
data AddSheetResponse

-- | Creates a value of <a>AddSheetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aProperties</a></li>
--   </ul>
addSheetResponse :: AddSheetResponse

-- | The properties of the newly added sheet.
aProperties :: Lens' AddSheetResponse (Maybe SheetProperties)

-- | A protected range.
--   
--   <i>See:</i> <a>protectedRange</a> smart constructor.
data ProtectedRange

-- | Creates a value of <a>ProtectedRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prProtectedRangeId</a></li>
--   <li><a>prWarningOnly</a></li>
--   <li><a>prNamedRangeId</a></li>
--   <li><a>prRange</a></li>
--   <li><a>prEditors</a></li>
--   <li><a>prUnprotectedRanges</a></li>
--   <li><a>prRequestingUserCanEdit</a></li>
--   <li><a>prDescription</a></li>
--   </ul>
protectedRange :: ProtectedRange

-- | The ID of the protected range. This field is read-only.
prProtectedRangeId :: Lens' ProtectedRange (Maybe Int32)

-- | 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)

-- | 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)

-- | 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)

-- | 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)

-- | The list of unprotected ranges within a protected sheet. Unprotected
--   ranges are only supported on protected sheets.
prUnprotectedRanges :: Lens' ProtectedRange [GridRange]

-- | True if the user who requested this protected range can edit the
--   protected area. This field is read-only.
prRequestingUserCanEdit :: Lens' ProtectedRange (Maybe Bool)

-- | The description of this protected range.
prDescription :: Lens' ProtectedRange (Maybe Text)

-- | An axis of the chart. A chart may not have more than one axis per axis
--   position.
--   
--   <i>See:</i> <a>basicChartAxis</a> smart constructor.
data BasicChartAxis

-- | Creates a value of <a>BasicChartAxis</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcaFormat</a></li>
--   <li><a>bcaTitle</a></li>
--   <li><a>bcaPosition</a></li>
--   </ul>
basicChartAxis :: BasicChartAxis

-- | The format of the title. Only valid if the axis is not associated with
--   the domain.
bcaFormat :: Lens' BasicChartAxis (Maybe TextFormat)

-- | The title of this axis. If set, this overrides any title inferred from
--   headers of the data.
bcaTitle :: Lens' BasicChartAxis (Maybe Text)

-- | The position of this axis.
bcaPosition :: Lens' BasicChartAxis (Maybe BasicChartAxisPosition)

-- | Data in the grid, as well as metadata about the dimensions.
--   
--   <i>See:</i> <a>gridData</a> smart constructor.
data GridData

-- | Creates a value of <a>GridData</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gdRowMetadata</a></li>
--   <li><a>gdStartRow</a></li>
--   <li><a>gdRowData</a></li>
--   <li><a>gdColumnMetadata</a></li>
--   <li><a>gdStartColumn</a></li>
--   </ul>
gridData :: GridData

-- | Metadata about the requested rows in the grid, starting with the row
--   in start_row.
gdRowMetadata :: Lens' GridData [DimensionProperties]

-- | The first row this GridData refers to, zero-based.
gdStartRow :: Lens' GridData (Maybe Int32)

-- | 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]

-- | Metadata about the requested columns in the grid, starting with the
--   column in start_column.
gdColumnMetadata :: Lens' GridData [DimensionProperties]

-- | The first column this GridData refers to, zero-based.
gdStartColumn :: Lens' GridData (Maybe Int32)

-- | The number format of a cell.
--   
--   <i>See:</i> <a>numberFormat</a> smart constructor.
data NumberFormat

-- | Creates a value of <a>NumberFormat</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nfPattern</a></li>
--   <li><a>nfType</a></li>
--   </ul>
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 <a>Date and Number Formats guide</a> for more
--   information about the supported patterns.
nfPattern :: Lens' NumberFormat (Maybe Text)

-- | The type of the number format. When writing, this field must be set.
nfType :: Lens' NumberFormat (Maybe NumberFormatType)

-- | The reply for batch updating a spreadsheet.
--   
--   <i>See:</i> <a>batchUpdateSpreadsheetResponse</a> smart constructor.
data BatchUpdateSpreadsheetResponse

-- | Creates a value of <a>BatchUpdateSpreadsheetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>busrSpreadsheetId</a></li>
--   <li><a>busrReplies</a></li>
--   <li><a>busrUpdatedSpreadsheet</a></li>
--   </ul>
batchUpdateSpreadsheetResponse :: BatchUpdateSpreadsheetResponse

-- | The spreadsheet the updates were applied to.
busrSpreadsheetId :: Lens' BatchUpdateSpreadsheetResponse (Maybe Text)

-- | The reply of the updates. This maps 1:1 with the updates, although
--   replies to some requests may be empty.
busrReplies :: Lens' BatchUpdateSpreadsheetResponse [Response]

-- | The spreadsheet after updates were applied. This is only set if
--   [BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is
--   `true`.
busrUpdatedSpreadsheet :: Lens' BatchUpdateSpreadsheetResponse (Maybe Spreadsheet)

-- | Sets a data validation rule to every cell in the range. To clear
--   validation in a range, call this with no rule specified.
--   
--   <i>See:</i> <a>setDataValidationRequest</a> smart constructor.
data SetDataValidationRequest

-- | Creates a value of <a>SetDataValidationRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sdvrRule</a></li>
--   <li><a>sdvrRange</a></li>
--   </ul>
setDataValidationRequest :: SetDataValidationRequest

-- | 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)

-- | The range the data validation rule should apply to.
sdvrRange :: Lens' SetDataValidationRequest (Maybe GridRange)

-- | 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.
--   
--   <i>See:</i> <a>bandingProperties</a> smart constructor.
data BandingProperties

-- | Creates a value of <a>BandingProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bpSecondBandColor</a></li>
--   <li><a>bpHeaderColor</a></li>
--   <li><a>bpFooterColor</a></li>
--   <li><a>bpFirstBandColor</a></li>
--   </ul>
bandingProperties :: BandingProperties

-- | The second color that is alternating. (Required)
bpSecondBandColor :: Lens' BandingProperties (Maybe Color)

-- | 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)

-- | 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)

-- | The first color that is alternating. (Required)
bpFirstBandColor :: Lens' BandingProperties (Maybe Color)

-- | Determines how the charts will use hidden rows or columns.
data ChartSpecHiddenDimensionStrategy

-- | <tt>CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED</tt> Default value, do
--   not use.
ChartHiddenDimensionStrategyUnspecified :: ChartSpecHiddenDimensionStrategy

-- | <tt>SKIP_HIDDEN_ROWS_AND_COLUMNS</tt> Charts will skip hidden rows and
--   columns.
SkipHiddenRowsAndColumns :: ChartSpecHiddenDimensionStrategy

-- | <tt>SKIP_HIDDEN_ROWS</tt> Charts will skip hidden rows only.
SkipHiddenRows :: ChartSpecHiddenDimensionStrategy

-- | <tt>SKIP_HIDDEN_COLUMNS</tt> Charts will skip hidden columns only.
SkipHiddenColumns :: ChartSpecHiddenDimensionStrategy

-- | <tt>SHOW_ALL</tt> Charts will not skip any hidden rows or columns.
ShowAll :: ChartSpecHiddenDimensionStrategy

-- | Duplicates a particular filter view.
--   
--   <i>See:</i> <a>duplicateFilterViewRequest</a> smart constructor.
data DuplicateFilterViewRequest

-- | Creates a value of <a>DuplicateFilterViewRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dFilterId</a></li>
--   </ul>
duplicateFilterViewRequest :: DuplicateFilterViewRequest

-- | The ID of the filter being duplicated.
dFilterId :: Lens' DuplicateFilterViewRequest (Maybe Int32)

-- | The style of the border.
data BOrderStyle

-- | <tt>STYLE_UNSPECIFIED</tt> The style is not specified. Do not use
--   this.
StyleUnspecified :: BOrderStyle

-- | <tt>DOTTED</tt> The border is dotted.
Dotted :: BOrderStyle

-- | <tt>DASHED</tt> The border is dashed.
Dashed :: BOrderStyle

-- | <tt>SOLID</tt> The border is a thin solid line.
Solid :: BOrderStyle

-- | <tt>SOLID_MEDIUM</tt> The border is a medium solid line.
SolidMedium :: BOrderStyle

-- | <tt>SOLID_THICK</tt> The border is a thick solid line.
SolidThick :: BOrderStyle

-- | <tt>NONE</tt> No border. Used only when updating a border in order to
--   erase it.
None :: BOrderStyle

-- | <tt>DOUBLE</tt> The border is two solid lines.
Double :: BOrderStyle

-- | A single grouping (either row or column) in a pivot table.
--   
--   <i>See:</i> <a>pivotGroup</a> smart constructor.
data PivotGroup

-- | Creates a value of <a>PivotGroup</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgValueMetadata</a></li>
--   <li><a>pgSourceColumnOffSet</a></li>
--   <li><a>pgSortOrder</a></li>
--   <li><a>pgShowTotals</a></li>
--   <li><a>pgValueBucket</a></li>
--   </ul>
pivotGroup :: PivotGroup

-- | Metadata about values in the grouping.
pgValueMetadata :: Lens' PivotGroup [PivotGroupValueMetadata]

-- | 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)

-- | The order the values in this group should be sorted.
pgSortOrder :: Lens' PivotGroup (Maybe PivotGroupSortOrder)

-- | True if the pivot table should include the totals for this grouping.
pgShowTotals :: Lens' PivotGroup (Maybe Bool)

-- | 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)

-- | The result of adding a banded range.
--   
--   <i>See:</i> <a>addBandingResponse</a> smart constructor.
data AddBandingResponse

-- | Creates a value of <a>AddBandingResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aBandedRange</a></li>
--   </ul>
addBandingResponse :: AddBandingResponse

-- | The banded range that was added.
aBandedRange :: Lens' AddBandingResponse (Maybe BandedRange)

-- | What kind of data to paste. All the source data will be cut,
--   regardless of what is pasted.
data CutPasteRequestPasteType

-- | <tt>PASTE_NORMAL</tt> Paste values, formulas, formats, and merges.
CPRPTPasteNormal :: CutPasteRequestPasteType

-- | <tt>PASTE_VALUES</tt> Paste the values ONLY without formats, formulas,
--   or merges.
CPRPTPasteValues :: CutPasteRequestPasteType

-- | <tt>PASTE_FORMAT</tt> Paste the format and data validation only.
CPRPTPasteFormat :: CutPasteRequestPasteType

-- | <tt>PASTE_NO_BORDERS</tt> Like PASTE_NORMAL but without borders.
CPRPTPasteNoBOrders :: CutPasteRequestPasteType

-- | <tt>PASTE_FORMULA</tt> Paste the formulas only.
CPRPTPasteFormula :: CutPasteRequestPasteType

-- | <tt>PASTE_DATA_VALIDATION</tt> Paste the data validation only.
CPRPTPasteDataValidation :: CutPasteRequestPasteType

-- | <tt>PASTE_CONDITIONAL_FORMATTING</tt> Paste the conditional formatting
--   rules only.
CPRPTPasteConditionalFormatting :: CutPasteRequestPasteType

-- | The position of the chart legend.
data BasicChartSpecLegendPosition

-- | <tt>BASIC_CHART_LEGEND_POSITION_UNSPECIFIED</tt> Default value, do not
--   use.
BCSLPBasicChartLegendPositionUnspecified :: BasicChartSpecLegendPosition

-- | <tt>BOTTOM_LEGEND</tt> The legend is rendered on the bottom of the
--   chart.
BCSLPBottomLegend :: BasicChartSpecLegendPosition

-- | <tt>LEFT_LEGEND</tt> The legend is rendered on the left of the chart.
BCSLPLeftLegend :: BasicChartSpecLegendPosition

-- | <tt>RIGHT_LEGEND</tt> The legend is rendered on the right of the
--   chart.
BCSLPRightLegend :: BasicChartSpecLegendPosition

-- | <tt>TOP_LEGEND</tt> The legend is rendered on the top of the chart.
BCSLPTopLegend :: BasicChartSpecLegendPosition

-- | <tt>NO_LEGEND</tt> No legend is rendered.
BCSLPNoLegend :: BasicChartSpecLegendPosition

-- | The type of error.
data ErrorValueType

-- | <tt>ERROR_TYPE_UNSPECIFIED</tt> The default error type, do not use
--   this.
ErrorTypeUnspecified :: ErrorValueType

-- | <tt>ERROR</tt> Corresponds to the `#ERROR!` error.
Error' :: ErrorValueType

-- | <tt>NULL_VALUE</tt> Corresponds to the `#NULL!` error.
NullValue :: ErrorValueType

-- | <tt>DIVIDE_BY_ZERO</tt> Corresponds to the `#DIV/0` error.
DivideByZero :: ErrorValueType

-- | <tt>VALUE</tt> Corresponds to the `#VALUE!` error.
Value :: ErrorValueType

-- | <tt>REF</tt> Corresponds to the `#REF!` error.
Ref :: ErrorValueType

-- | <tt>NAME</tt> Corresponds to the `#NAME?` error.
Name :: ErrorValueType

-- | <tt>NUM</tt> Corresponds to the `#NUM`! error.
Num :: ErrorValueType

-- | <tt>N_A</tt> Corresponds to the `#N/A` error.
NA :: ErrorValueType

-- | <tt>LOADING</tt> Corresponds to the `Loading...` state.
Loading :: ErrorValueType

-- | A rule describing a conditional format.
--   
--   <i>See:</i> <a>conditionalFormatRule</a> smart constructor.
data ConditionalFormatRule

-- | Creates a value of <a>ConditionalFormatRule</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cfrBooleanRule</a></li>
--   <li><a>cfrGradientRule</a></li>
--   <li><a>cfrRanges</a></li>
--   </ul>
conditionalFormatRule :: ConditionalFormatRule

-- | The formatting is either "on" or "off" according to the rule.
cfrBooleanRule :: Lens' ConditionalFormatRule (Maybe BooleanRule)

-- | The formatting will vary based on the gradients in the rule.
cfrGradientRule :: Lens' ConditionalFormatRule (Maybe GradientRule)

-- | The ranges that will be formatted if the condition is true. All the
--   ranges must be on the same grid.
cfrRanges :: Lens' ConditionalFormatRule [GridRange]

-- | The specification for a basic chart. See BasicChartType for the list
--   of charts this supports.
--   
--   <i>See:</i> <a>basicChartSpec</a> smart constructor.
data BasicChartSpec

-- | Creates a value of <a>BasicChartSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bHeaderCount</a></li>
--   <li><a>bLegendPosition</a></li>
--   <li><a>bSeries</a></li>
--   <li><a>bChartType</a></li>
--   <li><a>bDomains</a></li>
--   <li><a>bAxis</a></li>
--   </ul>
basicChartSpec :: BasicChartSpec

-- | The number of rows or columns in the data that are "headers". If not
--   set, Google Sheets will guess how many rows are headers based on the
--   data. (Note that BasicChartAxis.title may override the axis title
--   inferred from the header values.)
bHeaderCount :: Lens' BasicChartSpec (Maybe Int32)

-- | The position of the chart legend.
bLegendPosition :: Lens' BasicChartSpec (Maybe BasicChartSpecLegendPosition)

-- | The data this chart is visualizing.
bSeries :: Lens' BasicChartSpec [BasicChartSeries]

-- | The type of the chart.
bChartType :: Lens' BasicChartSpec (Maybe BasicChartSpecChartType)

-- | The domain of data this is charting. Only a single domain is currently
--   supported.
bDomains :: Lens' BasicChartSpec [BasicChartDomain]

-- | The axis on the chart.
bAxis :: Lens' BasicChartSpec [BasicChartAxis]

-- | Adds a new conditional format rule at the given index. All subsequent
--   rules' indexes are incremented.
--   
--   <i>See:</i> <a>addConditionalFormatRuleRequest</a> smart constructor.
data AddConditionalFormatRuleRequest

-- | Creates a value of <a>AddConditionalFormatRuleRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acfrrRule</a></li>
--   <li><a>acfrrIndex</a></li>
--   </ul>
addConditionalFormatRuleRequest :: AddConditionalFormatRuleRequest

-- | The rule to add.
acfrrRule :: Lens' AddConditionalFormatRuleRequest (Maybe ConditionalFormatRule)

-- | The zero-based index where the rule should be inserted.
acfrrIndex :: Lens' AddConditionalFormatRuleRequest (Maybe Int32)

-- | Whether values should be listed horizontally (as columns) or
--   vertically (as rows).
data PivotTableValueLayout

-- | <tt>HORIZONTAL</tt> Values are laid out horizontally (as columns).
Horizontal :: PivotTableValueLayout

-- | <tt>VERTICAL</tt> Values are laid out vertically (as rows).
Vertical :: PivotTableValueLayout

-- | The result of duplicating a sheet.
--   
--   <i>See:</i> <a>duplicateSheetResponse</a> smart constructor.
data DuplicateSheetResponse

-- | Creates a value of <a>DuplicateSheetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrProperties</a></li>
--   </ul>
duplicateSheetResponse :: DuplicateSheetResponse

-- | The properties of the duplicate sheet.
dsrProperties :: Lens' DuplicateSheetResponse (Maybe SheetProperties)

-- | The format of a run of text in a cell. Absent values indicate that the
--   field isn't specified.
--   
--   <i>See:</i> <a>textFormat</a> smart constructor.
data TextFormat

-- | Creates a value of <a>TextFormat</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tfFontFamily</a></li>
--   <li><a>tfForegRoundColor</a></li>
--   <li><a>tfFontSize</a></li>
--   <li><a>tfUnderline</a></li>
--   <li><a>tfItalic</a></li>
--   <li><a>tfBold</a></li>
--   <li><a>tfStrikethrough</a></li>
--   </ul>
textFormat :: TextFormat

-- | The font family.
tfFontFamily :: Lens' TextFormat (Maybe Text)

-- | The foreground color of the text.
tfForegRoundColor :: Lens' TextFormat (Maybe Color)

-- | The size of the font.
tfFontSize :: Lens' TextFormat (Maybe Int32)

-- | True if the text is underlined.
tfUnderline :: Lens' TextFormat (Maybe Bool)

-- | True if the text is italicized.
tfItalic :: Lens' TextFormat (Maybe Bool)

-- | True if the text is bold.
tfBold :: Lens' TextFormat (Maybe Bool)

-- | True if the text has a strikethrough.
tfStrikethrough :: Lens' TextFormat (Maybe Bool)

-- | The response when updating a range of values in a spreadsheet.
--   
--   <i>See:</i> <a>batchClearValuesResponse</a> smart constructor.
data BatchClearValuesResponse

-- | Creates a value of <a>BatchClearValuesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcvrClearedRanges</a></li>
--   <li><a>bcvrSpreadsheetId</a></li>
--   </ul>
batchClearValuesResponse :: BatchClearValuesResponse

-- | 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]

-- | The spreadsheet the updates were applied to.
bcvrSpreadsheetId :: Lens' BatchClearValuesResponse (Maybe Text)

-- | The domain of a chart. For example, if charting stock prices over
--   time, this would be the date.
--   
--   <i>See:</i> <a>basicChartDomain</a> smart constructor.
data BasicChartDomain

-- | Creates a value of <a>BasicChartDomain</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bcdDomain</a></li>
--   </ul>
basicChartDomain :: BasicChartDomain

-- | 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)

-- | How the value should be interpreted.
data InterpolationPointType

-- | <tt>INTERPOLATION_POINT_TYPE_UNSPECIFIED</tt> The default value, do
--   not use.
IPTInterpolationPointTypeUnspecified :: InterpolationPointType

-- | <tt>MIN</tt> The interpolation point will use the minimum value in the
--   cells over the range of the conditional format.
IPTMin :: InterpolationPointType

-- | <tt>MAX</tt> The interpolation point will use the maximum value in the
--   cells over the range of the conditional format.
IPTMax :: InterpolationPointType

-- | <tt>NUMBER</tt> The interpolation point will use exactly the value in
--   InterpolationPoint.value.
IPTNumber :: InterpolationPointType

-- | <tt>PERCENT</tt> The interpolation point will be the given percentage
--   over all the cells in the range of the conditional format. This is
--   equivalent to NUMBER if the value was: `=(MAX(FLATTEN(range)) * (value
--   / 100)) + (MIN(FLATTEN(range)) * (1 - (value / 100)))` (where errors
--   in the range are ignored when flattening).
IPTPercent :: InterpolationPointType

-- | <tt>PERCENTILE</tt> The interpolation point will be the given
--   percentile over all the cells in the range of the conditional format.
--   This is equivalent to NUMBER if the value was:
--   `=PERCENTILE(FLATTEN(range), value / 100)` (where errors in the range
--   are ignored when flattening).
IPTPercentile :: InterpolationPointType

-- | The delimiter type to use.
data TextToColumnsRequestDelimiterType

-- | <tt>DELIMITER_TYPE_UNSPECIFIED</tt> Default value. This value must not
--   be used.
TTCRDTDelimiterTypeUnspecified :: TextToColumnsRequestDelimiterType

-- | <tt>COMMA</tt> ","
TTCRDTComma :: TextToColumnsRequestDelimiterType

-- | <tt>SEMICOLON</tt> ";"
TTCRDTSemicolon :: TextToColumnsRequestDelimiterType

-- | <tt>PERIOD</tt> "."
TTCRDTPeriod :: TextToColumnsRequestDelimiterType

-- | <tt>SPACE</tt> " "
TTCRDTSpace :: TextToColumnsRequestDelimiterType

-- | <tt>CUSTOM</tt> A custom value as defined in delimiter.
TTCRDTCustom :: TextToColumnsRequestDelimiterType

-- | Inserts cells into a range, shifting the existing cells over or down.
--   
--   <i>See:</i> <a>insertRangeRequest</a> smart constructor.
data InsertRangeRequest

-- | Creates a value of <a>InsertRangeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irrShiftDimension</a></li>
--   <li><a>irrRange</a></li>
--   </ul>
insertRangeRequest :: InsertRangeRequest

-- | 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)

-- | The range to insert new cells into.
irrRange :: Lens' InsertRangeRequest (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.
data InsertRangeRequestShiftDimension

-- | <tt>DIMENSION_UNSPECIFIED</tt> The default value, do not use.
IRRSDDimensionUnspecified :: InsertRangeRequestShiftDimension

-- | <tt>ROWS</tt> Operates on the rows of a sheet.
IRRSDRows :: InsertRangeRequestShiftDimension

-- | <tt>COLUMNS</tt> Operates on the columns of a sheet.
IRRSDColumns :: InsertRangeRequestShiftDimension

-- | The amount of padding around the cell, in pixels. When updating
--   padding, every field must be specified.
--   
--   <i>See:</i> <a>padding</a> smart constructor.
data Padding

-- | Creates a value of <a>Padding</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pBottom</a></li>
--   <li><a>pLeft</a></li>
--   <li><a>pRight</a></li>
--   <li><a>pTop</a></li>
--   </ul>
padding :: Padding

-- | The bottom padding of the cell.
pBottom :: Lens' Padding (Maybe Int32)

-- | The left padding of the cell.
pLeft :: Lens' Padding (Maybe Int32)

-- | The right padding of the cell.
pRight :: Lens' Padding (Maybe Int32)

-- | The top padding of the cell.
pTop :: Lens' Padding (Maybe Int32)

-- | The specifications of a chart.
--   
--   <i>See:</i> <a>chartSpec</a> smart constructor.
data ChartSpec

-- | Creates a value of <a>ChartSpec</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csTitle</a></li>
--   <li><a>csPieChart</a></li>
--   <li><a>csBasicChart</a></li>
--   <li><a>csHiddenDimensionStrategy</a></li>
--   </ul>
chartSpec :: ChartSpec

-- | The title of the chart.
csTitle :: Lens' ChartSpec (Maybe Text)

-- | A pie chart specification.
csPieChart :: Lens' ChartSpec (Maybe PieChartSpec)

-- | 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)

-- | Determines how the charts will use hidden rows or columns.
csHiddenDimensionStrategy :: Lens' ChartSpec (Maybe ChartSpecHiddenDimensionStrategy)

-- | Properties about a dimension.
--   
--   <i>See:</i> <a>dimensionProperties</a> smart constructor.
data DimensionProperties

-- | Creates a value of <a>DimensionProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpHiddenByFilter</a></li>
--   <li><a>dpPixelSize</a></li>
--   <li><a>dpHiddenByUser</a></li>
--   </ul>
dimensionProperties :: DimensionProperties

-- | True if this dimension is being filtered. This field is read-only.
dpHiddenByFilter :: Lens' DimensionProperties (Maybe Bool)

-- | The height (if a row) or width (if a column) of the dimension in
--   pixels.
dpPixelSize :: Lens' DimensionProperties (Maybe Int32)

-- | True if this dimension is explicitly hidden.
dpHiddenByUser :: Lens' DimensionProperties (Maybe Bool)

-- | Updates properties of the supplied banded range.
--   
--   <i>See:</i> <a>updateBandingRequest</a> smart constructor.
data UpdateBandingRequest

-- | Creates a value of <a>UpdateBandingRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ubrBandedRange</a></li>
--   <li><a>ubrFields</a></li>
--   </ul>
updateBandingRequest :: UpdateBandingRequest

-- | The banded range to update with the new properties.
ubrBandedRange :: Lens' UpdateBandingRequest (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.
ubrFields :: Lens' UpdateBandingRequest (Maybe FieldMask)

-- | The response when retrieving more than one range of values in a
--   spreadsheet.
--   
--   <i>See:</i> <a>batchGetValuesResponse</a> smart constructor.
data BatchGetValuesResponse

-- | Creates a value of <a>BatchGetValuesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bgvrSpreadsheetId</a></li>
--   <li><a>bgvrValueRanges</a></li>
--   </ul>
batchGetValuesResponse :: BatchGetValuesResponse

-- | The ID of the spreadsheet the data was retrieved from.
bgvrSpreadsheetId :: Lens' BatchGetValuesResponse (Maybe Text)

-- | The requested values. The order of the ValueRanges is the same as the
--   order of the requested ranges.
bgvrValueRanges :: Lens' BatchGetValuesResponse [ValueRange]

-- | Removes the banded range with the given ID from the spreadsheet.
--   
--   <i>See:</i> <a>deleteBandingRequest</a> smart constructor.
data DeleteBandingRequest

-- | Creates a value of <a>DeleteBandingRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dbrBandedRangeId</a></li>
--   </ul>
deleteBandingRequest :: DeleteBandingRequest

-- | The ID of the banded range to delete.
dbrBandedRangeId :: Lens' DeleteBandingRequest (Maybe Int32)

-- | A single kind of update to apply to a spreadsheet.
--   
--   <i>See:</i> <a>request'</a> smart constructor.
data Request'

-- | Creates a value of <a>Request</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>reqAddFilterView</a></li>
--   <li><a>reqDeleteProtectedRange</a></li>
--   <li><a>reqUpdateProtectedRange</a></li>
--   <li><a>reqUpdateCells</a></li>
--   <li><a>reqDuplicateFilterView</a></li>
--   <li><a>reqAddConditionalFormatRule</a></li>
--   <li><a>reqSortRange</a></li>
--   <li><a>reqUpdateNamedRange</a></li>
--   <li><a>reqDeleteNamedRange</a></li>
--   <li><a>reqInsertRange</a></li>
--   <li><a>reqDeleteBanding</a></li>
--   <li><a>reqUpdateBanding</a></li>
--   <li><a>reqClearBasicFilter</a></li>
--   <li><a>reqAppendCells</a></li>
--   <li><a>reqPasteData</a></li>
--   <li><a>reqUpdateEmbeddedObjectPosition</a></li>
--   <li><a>reqDeleteRange</a></li>
--   <li><a>reqCopyPaste</a></li>
--   <li><a>reqAutoResizeDimensions</a></li>
--   <li><a>reqAddSheet</a></li>
--   <li><a>reqFindReplace</a></li>
--   <li><a>reqDeleteDimension</a></li>
--   <li><a>reqCutPaste</a></li>
--   <li><a>reqMoveDimension</a></li>
--   <li><a>reqRepeatCell</a></li>
--   <li><a>reqAddProtectedRange</a></li>
--   <li><a>reqUpdateFilterView</a></li>
--   <li><a>reqDeleteFilterView</a></li>
--   <li><a>reqInsertDimension</a></li>
--   <li><a>reqUpdateSheetProperties</a></li>
--   <li><a>reqDeleteConditionalFormatRule</a></li>
--   <li><a>reqUpdateConditionalFormatRule</a></li>
--   <li><a>reqDeleteEmbeddedObject</a></li>
--   <li><a>reqMergeCells</a></li>
--   <li><a>reqAddNamedRange</a></li>
--   <li><a>reqAddChart</a></li>
--   <li><a>reqAddBanding</a></li>
--   <li><a>reqDuplicateSheet</a></li>
--   <li><a>reqAutoFill</a></li>
--   <li><a>reqUpdateDimensionProperties</a></li>
--   <li><a>reqUpdateChartSpec</a></li>
--   <li><a>reqSetBasicFilter</a></li>
--   <li><a>reqTextToColumns</a></li>
--   <li><a>reqUpdateSpreadsheetProperties</a></li>
--   <li><a>reqDeleteSheet</a></li>
--   <li><a>reqUnmergeCells</a></li>
--   <li><a>reqUpdateBOrders</a></li>
--   <li><a>reqAppendDimension</a></li>
--   <li><a>reqSetDataValidation</a></li>
--   </ul>
request' :: Request'

-- | Adds a filter view.
reqAddFilterView :: Lens' Request' (Maybe AddFilterViewRequest)

-- | Deletes a protected range.
reqDeleteProtectedRange :: Lens' Request' (Maybe DeleteProtectedRangeRequest)

-- | Updates a protected range.
reqUpdateProtectedRange :: Lens' Request' (Maybe UpdateProtectedRangeRequest)

-- | Updates many cells at once.
reqUpdateCells :: Lens' Request' (Maybe UpdateCellsRequest)

-- | Duplicates a filter view.
reqDuplicateFilterView :: Lens' Request' (Maybe DuplicateFilterViewRequest)

-- | Adds a new conditional format rule.
reqAddConditionalFormatRule :: Lens' Request' (Maybe AddConditionalFormatRuleRequest)

-- | Sorts data in a range.
reqSortRange :: Lens' Request' (Maybe SortRangeRequest)

-- | Updates a named range.
reqUpdateNamedRange :: Lens' Request' (Maybe UpdateNamedRangeRequest)

-- | Deletes a named range.
reqDeleteNamedRange :: Lens' Request' (Maybe DeleteNamedRangeRequest)

-- | Inserts new cells in a sheet, shifting the existing cells.
reqInsertRange :: Lens' Request' (Maybe InsertRangeRequest)

-- | Removes a banded range
reqDeleteBanding :: Lens' Request' (Maybe DeleteBandingRequest)

-- | Updates a banded range
reqUpdateBanding :: Lens' Request' (Maybe UpdateBandingRequest)

-- | Clears the basic filter on a sheet.
reqClearBasicFilter :: Lens' Request' (Maybe ClearBasicFilterRequest)

-- | Appends cells after the last row with data in a sheet.
reqAppendCells :: Lens' Request' (Maybe AppendCellsRequest)

-- | Pastes data (HTML or delimited) into a sheet.
reqPasteData :: Lens' Request' (Maybe PasteDataRequest)

-- | Updates an embedded object's (e.g. chart, image) position.
reqUpdateEmbeddedObjectPosition :: Lens' Request' (Maybe UpdateEmbeddedObjectPositionRequest)

-- | Deletes a range of cells from a sheet, shifting the remaining cells.
reqDeleteRange :: Lens' Request' (Maybe DeleteRangeRequest)

-- | Copies data from one area and pastes it to another.
reqCopyPaste :: Lens' Request' (Maybe CopyPasteRequest)

-- | Automatically resizes one or more dimensions based on the contents of
--   the cells in that dimension.
reqAutoResizeDimensions :: Lens' Request' (Maybe AutoResizeDimensionsRequest)

-- | Adds a sheet.
reqAddSheet :: Lens' Request' (Maybe AddSheetRequest)

-- | Finds and replaces occurrences of some text with other text.
reqFindReplace :: Lens' Request' (Maybe FindReplaceRequest)

-- | Deletes rows or columns in a sheet.
reqDeleteDimension :: Lens' Request' (Maybe DeleteDimensionRequest)

-- | Cuts data from one area and pastes it to another.
reqCutPaste :: Lens' Request' (Maybe CutPasteRequest)

-- | Moves rows or columns to another location in a sheet.
reqMoveDimension :: Lens' Request' (Maybe MoveDimensionRequest)

-- | Repeats a single cell across a range.
reqRepeatCell :: Lens' Request' (Maybe RepeatCellRequest)

-- | Adds a protected range.
reqAddProtectedRange :: Lens' Request' (Maybe AddProtectedRangeRequest)

-- | Updates the properties of a filter view.
reqUpdateFilterView :: Lens' Request' (Maybe UpdateFilterViewRequest)

-- | Deletes a filter view from a sheet.
reqDeleteFilterView :: Lens' Request' (Maybe DeleteFilterViewRequest)

-- | Inserts new rows or columns in a sheet.
reqInsertDimension :: Lens' Request' (Maybe InsertDimensionRequest)

-- | Updates a sheet's properties.
reqUpdateSheetProperties :: Lens' Request' (Maybe UpdateSheetPropertiesRequest)

-- | Deletes an existing conditional format rule.
reqDeleteConditionalFormatRule :: Lens' Request' (Maybe DeleteConditionalFormatRuleRequest)

-- | Updates an existing conditional format rule.
reqUpdateConditionalFormatRule :: Lens' Request' (Maybe UpdateConditionalFormatRuleRequest)

-- | Deletes an embedded object (e.g, chart, image) in a sheet.
reqDeleteEmbeddedObject :: Lens' Request' (Maybe DeleteEmbeddedObjectRequest)

-- | Merges cells together.
reqMergeCells :: Lens' Request' (Maybe MergeCellsRequest)

-- | Adds a named range.
reqAddNamedRange :: Lens' Request' (Maybe AddNamedRangeRequest)

-- | Adds a chart.
reqAddChart :: Lens' Request' (Maybe AddChartRequest)

-- | Adds a new banded range
reqAddBanding :: Lens' Request' (Maybe AddBandingRequest)

-- | Duplicates a sheet.
reqDuplicateSheet :: Lens' Request' (Maybe DuplicateSheetRequest)

-- | Automatically fills in more data based on existing data.
reqAutoFill :: Lens' Request' (Maybe AutoFillRequest)

-- | Updates dimensions' properties.
reqUpdateDimensionProperties :: Lens' Request' (Maybe UpdateDimensionPropertiesRequest)

-- | Updates a chart's specifications.
reqUpdateChartSpec :: Lens' Request' (Maybe UpdateChartSpecRequest)

-- | Sets the basic filter on a sheet.
reqSetBasicFilter :: Lens' Request' (Maybe SetBasicFilterRequest)

-- | Converts a column of text into many columns of text.
reqTextToColumns :: Lens' Request' (Maybe TextToColumnsRequest)

-- | Updates the spreadsheet's properties.
reqUpdateSpreadsheetProperties :: Lens' Request' (Maybe UpdateSpreadsheetPropertiesRequest)

-- | Deletes a sheet.
reqDeleteSheet :: Lens' Request' (Maybe DeleteSheetRequest)

-- | Unmerges merged cells.
reqUnmergeCells :: Lens' Request' (Maybe UnmergeCellsRequest)

-- | Updates the borders in a range of cells.
reqUpdateBOrders :: Lens' Request' (Maybe UpdateBOrdersRequest)

-- | Appends dimensions to the end of a sheet.
reqAppendDimension :: Lens' Request' (Maybe AppendDimensionRequest)

-- | Sets data validation for one or more cells.
reqSetDataValidation :: Lens' Request' (Maybe SetDataValidationRequest)

-- | The result of deleting a conditional format rule.
--   
--   <i>See:</i> <a>deleteConditionalFormatRuleResponse</a> smart
--   constructor.
data DeleteConditionalFormatRuleResponse

-- | Creates a value of <a>DeleteConditionalFormatRuleResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcfrrRule</a></li>
--   </ul>
deleteConditionalFormatRuleResponse :: DeleteConditionalFormatRuleResponse

-- | The rule that was deleted.
dcfrrRule :: Lens' DeleteConditionalFormatRuleResponse (Maybe ConditionalFormatRule)

-- | The result of updating a conditional format rule.
--   
--   <i>See:</i> <a>updateConditionalFormatRuleResponse</a> smart
--   constructor.
data UpdateConditionalFormatRuleResponse

-- | Creates a value of <a>UpdateConditionalFormatRuleResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uNewRule</a></li>
--   <li><a>uNewIndex</a></li>
--   <li><a>uOldIndex</a></li>
--   <li><a>uOldRule</a></li>
--   </ul>
updateConditionalFormatRuleResponse :: UpdateConditionalFormatRuleResponse

-- | The new rule that replaced the old rule (if replacing), or the rule
--   that was moved (if moved)
uNewRule :: Lens' UpdateConditionalFormatRuleResponse (Maybe ConditionalFormatRule)

-- | The index of the new rule.
uNewIndex :: Lens' UpdateConditionalFormatRuleResponse (Maybe Int32)

-- | 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)

-- | The old (deleted) rule. Not set if a rule was moved (because it is the
--   same as new_rule).
uOldRule :: Lens' UpdateConditionalFormatRuleResponse (Maybe ConditionalFormatRule)
