diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,12 +8,12 @@
 
 ## Version
 
-`0.5.0`
+`1.0.0`
 
 
 ## Description
 
-A client library for the Google CustomSearch.
+A client library for the Google Custom Search.
 
 
 ## Contribute
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,3 @@
-import           Distribution.Simple
+import Distribution.Simple
+
 main = defaultMain
diff --git a/gen/Gogol/CustomSearch.hs b/gen/Gogol/CustomSearch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CustomSearch.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CustomSearch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Searches over a website or collection of websites
+--
+-- /See:/ <https://developers.google.com/custom-search/v1/introduction Custom Search API Reference>
+module Gogol.CustomSearch
+  ( -- * Configuration
+    customSearchService,
+
+    -- * Resources
+
+    -- ** search.cse.list
+    SearchCseListResource,
+    SearchCseList (..),
+    newSearchCseList,
+
+    -- ** search.cse.siterestrict.list
+    SearchCseSiterestrictListResource,
+    SearchCseSiterestrictList (..),
+    newSearchCseSiterestrictList,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** Promotion
+    Promotion (..),
+    newPromotion,
+
+    -- ** Promotion_BodyLinesItem
+    Promotion_BodyLinesItem (..),
+    newPromotion_BodyLinesItem,
+
+    -- ** Promotion_Image
+    Promotion_Image (..),
+    newPromotion_Image,
+
+    -- ** Result
+    Result (..),
+    newResult,
+
+    -- ** Result_Image
+    Result_Image (..),
+    newResult_Image,
+
+    -- ** Result_LabelsItem
+    Result_LabelsItem (..),
+    newResult_LabelsItem,
+
+    -- ** Result_Pagemap
+    Result_Pagemap (..),
+    newResult_Pagemap,
+
+    -- ** Search
+    Search (..),
+    newSearch,
+
+    -- ** Search_Context
+    Search_Context (..),
+    newSearch_Context,
+
+    -- ** Search_Queries
+    Search_Queries (..),
+    newSearch_Queries,
+
+    -- ** Search_Queries_NextPageItem
+    Search_Queries_NextPageItem (..),
+    newSearch_Queries_NextPageItem,
+
+    -- ** Search_Queries_PreviousPageItem
+    Search_Queries_PreviousPageItem (..),
+    newSearch_Queries_PreviousPageItem,
+
+    -- ** Search_Queries_RequestItem
+    Search_Queries_RequestItem (..),
+    newSearch_Queries_RequestItem,
+
+    -- ** Search_SearchInformation
+    Search_SearchInformation (..),
+    newSearch_SearchInformation,
+
+    -- ** Search_Spelling
+    Search_Spelling (..),
+    newSearch_Spelling,
+
+    -- ** Search_Url
+    Search_Url (..),
+    newSearch_Url,
+
+    -- ** CseListImgColorType
+    CseListImgColorType (..),
+
+    -- ** CseListImgDominantColor
+    CseListImgDominantColor (..),
+
+    -- ** CseListImgSize
+    CseListImgSize (..),
+
+    -- ** CseListImgType
+    CseListImgType (..),
+
+    -- ** CseListSafe
+    CseListSafe (..),
+
+    -- ** CseListSearchType
+    CseListSearchType (..),
+
+    -- ** CseListSiteSearchFilter
+    CseListSiteSearchFilter (..),
+
+    -- ** CseSiterestrictListImgColorType
+    CseSiterestrictListImgColorType (..),
+
+    -- ** CseSiterestrictListImgDominantColor
+    CseSiterestrictListImgDominantColor (..),
+
+    -- ** CseSiterestrictListImgSize
+    CseSiterestrictListImgSize (..),
+
+    -- ** CseSiterestrictListImgType
+    CseSiterestrictListImgType (..),
+
+    -- ** CseSiterestrictListSafe
+    CseSiterestrictListSafe (..),
+
+    -- ** CseSiterestrictListSearchType
+    CseSiterestrictListSearchType (..),
+
+    -- ** CseSiterestrictListSiteSearchFilter
+    CseSiterestrictListSiteSearchFilter (..),
+  )
+where
+
+import Gogol.CustomSearch.Search.Cse.List
+import Gogol.CustomSearch.Search.Cse.Siterestrict.List
+import Gogol.CustomSearch.Types
diff --git a/gen/Gogol/CustomSearch/Internal/Product.hs b/gen/Gogol/CustomSearch/Internal/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CustomSearch/Internal/Product.hs
@@ -0,0 +1,1374 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CustomSearch.Internal.Product
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.CustomSearch.Internal.Product
+  ( -- * Promotion
+    Promotion (..),
+    newPromotion,
+
+    -- * Promotion_BodyLinesItem
+    Promotion_BodyLinesItem (..),
+    newPromotion_BodyLinesItem,
+
+    -- * Promotion_Image
+    Promotion_Image (..),
+    newPromotion_Image,
+
+    -- * Result
+    Result (..),
+    newResult,
+
+    -- * Result_Image
+    Result_Image (..),
+    newResult_Image,
+
+    -- * Result_LabelsItem
+    Result_LabelsItem (..),
+    newResult_LabelsItem,
+
+    -- * Result_Pagemap
+    Result_Pagemap (..),
+    newResult_Pagemap,
+
+    -- * Search
+    Search (..),
+    newSearch,
+
+    -- * Search_Context
+    Search_Context (..),
+    newSearch_Context,
+
+    -- * Search_Queries
+    Search_Queries (..),
+    newSearch_Queries,
+
+    -- * Search_Queries_NextPageItem
+    Search_Queries_NextPageItem (..),
+    newSearch_Queries_NextPageItem,
+
+    -- * Search_Queries_PreviousPageItem
+    Search_Queries_PreviousPageItem (..),
+    newSearch_Queries_PreviousPageItem,
+
+    -- * Search_Queries_RequestItem
+    Search_Queries_RequestItem (..),
+    newSearch_Queries_RequestItem,
+
+    -- * Search_SearchInformation
+    Search_SearchInformation (..),
+    newSearch_SearchInformation,
+
+    -- * Search_Spelling
+    Search_Spelling (..),
+    newSearch_Spelling,
+
+    -- * Search_Url
+    Search_Url (..),
+    newSearch_Url,
+  )
+where
+
+import Gogol.CustomSearch.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Promotion result.
+--
+-- /See:/ 'newPromotion' smart constructor.
+data Promotion = Promotion
+  { -- | An array of block objects for this promotion.
+    bodyLines :: (Core.Maybe [Promotion_BodyLinesItem]),
+    -- | An abridged version of this search\'s result URL, e.g. www.example.com.
+    displayLink :: (Core.Maybe Core.Text),
+    -- | The title of the promotion, in HTML.
+    htmlTitle :: (Core.Maybe Core.Text),
+    -- | Image belonging to a promotion.
+    image :: (Core.Maybe Promotion_Image),
+    -- | The URL of the promotion.
+    link :: (Core.Maybe Core.Text),
+    -- | The title of the promotion.
+    title :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Promotion' with the minimum fields required to make a request.
+newPromotion ::
+  Promotion
+newPromotion =
+  Promotion
+    { bodyLines = Core.Nothing,
+      displayLink = Core.Nothing,
+      htmlTitle = Core.Nothing,
+      image = Core.Nothing,
+      link = Core.Nothing,
+      title = Core.Nothing
+    }
+
+instance Core.FromJSON Promotion where
+  parseJSON =
+    Core.withObject
+      "Promotion"
+      ( \o ->
+          Promotion
+            Core.<$> (o Core..:? "bodyLines")
+            Core.<*> (o Core..:? "displayLink")
+            Core.<*> (o Core..:? "htmlTitle")
+            Core.<*> (o Core..:? "image")
+            Core.<*> (o Core..:? "link")
+            Core.<*> (o Core..:? "title")
+      )
+
+instance Core.ToJSON Promotion where
+  toJSON Promotion {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("bodyLines" Core..=) Core.<$> bodyLines,
+            ("displayLink" Core..=) Core.<$> displayLink,
+            ("htmlTitle" Core..=) Core.<$> htmlTitle,
+            ("image" Core..=) Core.<$> image,
+            ("link" Core..=) Core.<$> link,
+            ("title" Core..=) Core.<$> title
+          ]
+      )
+
+-- | Block object belonging to a promotion.
+--
+-- /See:/ 'newPromotion_BodyLinesItem' smart constructor.
+data Promotion_BodyLinesItem = Promotion_BodyLinesItem
+  { -- | The block object\'s text in HTML, if it has text.
+    htmlTitle :: (Core.Maybe Core.Text),
+    -- | The anchor text of the block object\'s link, if it has a link.
+    link :: (Core.Maybe Core.Text),
+    -- | The block object\'s text, if it has text.
+    title :: (Core.Maybe Core.Text),
+    -- | The URL of the block object\'s link, if it has one.
+    url :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Promotion_BodyLinesItem' with the minimum fields required to make a request.
+newPromotion_BodyLinesItem ::
+  Promotion_BodyLinesItem
+newPromotion_BodyLinesItem =
+  Promotion_BodyLinesItem
+    { htmlTitle = Core.Nothing,
+      link = Core.Nothing,
+      title = Core.Nothing,
+      url = Core.Nothing
+    }
+
+instance Core.FromJSON Promotion_BodyLinesItem where
+  parseJSON =
+    Core.withObject
+      "Promotion_BodyLinesItem"
+      ( \o ->
+          Promotion_BodyLinesItem
+            Core.<$> (o Core..:? "htmlTitle")
+            Core.<*> (o Core..:? "link")
+            Core.<*> (o Core..:? "title")
+            Core.<*> (o Core..:? "url")
+      )
+
+instance Core.ToJSON Promotion_BodyLinesItem where
+  toJSON Promotion_BodyLinesItem {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("htmlTitle" Core..=) Core.<$> htmlTitle,
+            ("link" Core..=) Core.<$> link,
+            ("title" Core..=) Core.<$> title,
+            ("url" Core..=) Core.<$> url
+          ]
+      )
+
+-- | Image belonging to a promotion.
+--
+-- /See:/ 'newPromotion_Image' smart constructor.
+data Promotion_Image = Promotion_Image
+  { -- | Image height in pixels.
+    height :: (Core.Maybe Core.Int32),
+    -- | URL of the image for this promotion link.
+    source :: (Core.Maybe Core.Text),
+    -- | Image width in pixels.
+    width :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Promotion_Image' with the minimum fields required to make a request.
+newPromotion_Image ::
+  Promotion_Image
+newPromotion_Image =
+  Promotion_Image
+    { height = Core.Nothing,
+      source = Core.Nothing,
+      width = Core.Nothing
+    }
+
+instance Core.FromJSON Promotion_Image where
+  parseJSON =
+    Core.withObject
+      "Promotion_Image"
+      ( \o ->
+          Promotion_Image
+            Core.<$> (o Core..:? "height")
+            Core.<*> (o Core..:? "source")
+            Core.<*> (o Core..:? "width")
+      )
+
+instance Core.ToJSON Promotion_Image where
+  toJSON Promotion_Image {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("height" Core..=) Core.<$> height,
+            ("source" Core..=) Core.<$> source,
+            ("width" Core..=) Core.<$> width
+          ]
+      )
+
+-- | A custom search result.
+--
+-- /See:/ 'newResult' smart constructor.
+data Result = Result
+  { -- | Indicates the ID of Google\'s cached version of the search result.
+    cacheId :: (Core.Maybe Core.Text),
+    -- | An abridged version of this search result’s URL, e.g. www.example.com.
+    displayLink :: (Core.Maybe Core.Text),
+    -- | The file format of the search result.
+    fileFormat :: (Core.Maybe Core.Text),
+    -- | The URL displayed after the snippet for each search result.
+    formattedUrl :: (Core.Maybe Core.Text),
+    -- | The HTML-formatted URL displayed after the snippet for each search result.
+    htmlFormattedUrl :: (Core.Maybe Core.Text),
+    -- | The snippet of the search result, in HTML.
+    htmlSnippet :: (Core.Maybe Core.Text),
+    -- | The title of the search result, in HTML.
+    htmlTitle :: (Core.Maybe Core.Text),
+    -- | Image belonging to a custom search result.
+    image :: (Core.Maybe Result_Image),
+    -- | A unique identifier for the type of current object. For this API, it is @customsearch#result.@
+    kind :: (Core.Maybe Core.Text),
+    -- | Encapsulates all information about refinement labels.
+    labels :: (Core.Maybe [Result_LabelsItem]),
+    -- | The full URL to which the search result is pointing, e.g. http:\/\/www.example.com\/foo\/bar.
+    link :: (Core.Maybe Core.Text),
+    -- | The MIME type of the search result.
+    mime :: (Core.Maybe Core.Text),
+    -- | Contains <https://developers.google.com/custom-search/docs/structured_data#pagemaps PageMap> information for this search result.
+    pagemap :: (Core.Maybe Result_Pagemap),
+    -- | The snippet of the search result, in plain text.
+    snippet :: (Core.Maybe Core.Text),
+    -- | The title of the search result, in plain text.
+    title :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Result' with the minimum fields required to make a request.
+newResult ::
+  Result
+newResult =
+  Result
+    { cacheId = Core.Nothing,
+      displayLink = Core.Nothing,
+      fileFormat = Core.Nothing,
+      formattedUrl = Core.Nothing,
+      htmlFormattedUrl = Core.Nothing,
+      htmlSnippet = Core.Nothing,
+      htmlTitle = Core.Nothing,
+      image = Core.Nothing,
+      kind = Core.Nothing,
+      labels = Core.Nothing,
+      link = Core.Nothing,
+      mime = Core.Nothing,
+      pagemap = Core.Nothing,
+      snippet = Core.Nothing,
+      title = Core.Nothing
+    }
+
+instance Core.FromJSON Result where
+  parseJSON =
+    Core.withObject
+      "Result"
+      ( \o ->
+          Result
+            Core.<$> (o Core..:? "cacheId")
+            Core.<*> (o Core..:? "displayLink")
+            Core.<*> (o Core..:? "fileFormat")
+            Core.<*> (o Core..:? "formattedUrl")
+            Core.<*> (o Core..:? "htmlFormattedUrl")
+            Core.<*> (o Core..:? "htmlSnippet")
+            Core.<*> (o Core..:? "htmlTitle")
+            Core.<*> (o Core..:? "image")
+            Core.<*> (o Core..:? "kind")
+            Core.<*> (o Core..:? "labels")
+            Core.<*> (o Core..:? "link")
+            Core.<*> (o Core..:? "mime")
+            Core.<*> (o Core..:? "pagemap")
+            Core.<*> (o Core..:? "snippet")
+            Core.<*> (o Core..:? "title")
+      )
+
+instance Core.ToJSON Result where
+  toJSON Result {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("cacheId" Core..=) Core.<$> cacheId,
+            ("displayLink" Core..=) Core.<$> displayLink,
+            ("fileFormat" Core..=) Core.<$> fileFormat,
+            ("formattedUrl" Core..=) Core.<$> formattedUrl,
+            ("htmlFormattedUrl" Core..=) Core.<$> htmlFormattedUrl,
+            ("htmlSnippet" Core..=) Core.<$> htmlSnippet,
+            ("htmlTitle" Core..=) Core.<$> htmlTitle,
+            ("image" Core..=) Core.<$> image,
+            ("kind" Core..=) Core.<$> kind,
+            ("labels" Core..=) Core.<$> labels,
+            ("link" Core..=) Core.<$> link,
+            ("mime" Core..=) Core.<$> mime,
+            ("pagemap" Core..=) Core.<$> pagemap,
+            ("snippet" Core..=) Core.<$> snippet,
+            ("title" Core..=) Core.<$> title
+          ]
+      )
+
+-- | Image belonging to a custom search result.
+--
+-- /See:/ 'newResult_Image' smart constructor.
+data Result_Image = Result_Image
+  { -- | The size of the image, in bytes.
+    byteSize :: (Core.Maybe Core.Int32),
+    -- | A URL pointing to the webpage hosting the image.
+    contextLink :: (Core.Maybe Core.Text),
+    -- | The height of the image, in pixels.
+    height :: (Core.Maybe Core.Int32),
+    -- | The height of the thumbnail image, in pixels.
+    thumbnailHeight :: (Core.Maybe Core.Int32),
+    -- | A URL to the thumbnail image.
+    thumbnailLink :: (Core.Maybe Core.Text),
+    -- | The width of the thumbnail image, in pixels.
+    thumbnailWidth :: (Core.Maybe Core.Int32),
+    -- | The width of the image, in pixels.
+    width :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Result_Image' with the minimum fields required to make a request.
+newResult_Image ::
+  Result_Image
+newResult_Image =
+  Result_Image
+    { byteSize = Core.Nothing,
+      contextLink = Core.Nothing,
+      height = Core.Nothing,
+      thumbnailHeight = Core.Nothing,
+      thumbnailLink = Core.Nothing,
+      thumbnailWidth = Core.Nothing,
+      width = Core.Nothing
+    }
+
+instance Core.FromJSON Result_Image where
+  parseJSON =
+    Core.withObject
+      "Result_Image"
+      ( \o ->
+          Result_Image
+            Core.<$> (o Core..:? "byteSize")
+            Core.<*> (o Core..:? "contextLink")
+            Core.<*> (o Core..:? "height")
+            Core.<*> (o Core..:? "thumbnailHeight")
+            Core.<*> (o Core..:? "thumbnailLink")
+            Core.<*> (o Core..:? "thumbnailWidth")
+            Core.<*> (o Core..:? "width")
+      )
+
+instance Core.ToJSON Result_Image where
+  toJSON Result_Image {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("byteSize" Core..=) Core.<$> byteSize,
+            ("contextLink" Core..=) Core.<$> contextLink,
+            ("height" Core..=) Core.<$> height,
+            ("thumbnailHeight" Core..=) Core.<$> thumbnailHeight,
+            ("thumbnailLink" Core..=) Core.<$> thumbnailLink,
+            ("thumbnailWidth" Core..=) Core.<$> thumbnailWidth,
+            ("width" Core..=) Core.<$> width
+          ]
+      )
+
+-- | Refinement label associated with a custom search result.
+--
+-- /See:/ 'newResult_LabelsItem' smart constructor.
+data Result_LabelsItem = Result_LabelsItem
+  { -- | The display name of a refinement label. This is the name you should display in your user interface.
+    displayName :: (Core.Maybe Core.Text),
+    -- | Refinement label and the associated refinement operation.
+    labelWithOp :: (Core.Maybe Core.Text),
+    -- | The name of a refinement label, which you can use to refine searches. Don\'t display this in your user interface; instead, use displayName.
+    name :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Result_LabelsItem' with the minimum fields required to make a request.
+newResult_LabelsItem ::
+  Result_LabelsItem
+newResult_LabelsItem =
+  Result_LabelsItem
+    { displayName = Core.Nothing,
+      labelWithOp = Core.Nothing,
+      name = Core.Nothing
+    }
+
+instance Core.FromJSON Result_LabelsItem where
+  parseJSON =
+    Core.withObject
+      "Result_LabelsItem"
+      ( \o ->
+          Result_LabelsItem
+            Core.<$> (o Core..:? "displayName")
+            Core.<*> (o Core..:? "label_with_op")
+            Core.<*> (o Core..:? "name")
+      )
+
+instance Core.ToJSON Result_LabelsItem where
+  toJSON Result_LabelsItem {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("displayName" Core..=) Core.<$> displayName,
+            ("label_with_op" Core..=) Core.<$> labelWithOp,
+            ("name" Core..=) Core.<$> name
+          ]
+      )
+
+-- | Contains <https://developers.google.com/custom-search/docs/structured_data#pagemaps PageMap> information for this search result.
+--
+-- /See:/ 'newResult_Pagemap' smart constructor.
+newtype Result_Pagemap = Result_Pagemap
+  { -- | Properties of the object.
+    additional :: (Core.HashMap Core.Text Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Result_Pagemap' with the minimum fields required to make a request.
+newResult_Pagemap ::
+  -- |  Properties of the object. See 'additional'.
+  Core.HashMap Core.Text Core.Value ->
+  Result_Pagemap
+newResult_Pagemap additional =
+  Result_Pagemap {additional = additional}
+
+instance Core.FromJSON Result_Pagemap where
+  parseJSON =
+    Core.withObject
+      "Result_Pagemap"
+      (\o -> Result_Pagemap Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON Result_Pagemap where
+  toJSON Result_Pagemap {..} = Core.toJSON additional
+
+-- | Response to a custom search request.
+--
+-- /See:/ 'newSearch' smart constructor.
+data Search = Search
+  { -- | Metadata and refinements associated with the given search engine, including: * The name of the search engine that was used for the query. * A set of <https://developers.google.com/custom-search/docs/refinements#create facet objects> (refinements) you can use for refining a search.
+    context :: (Core.Maybe Search_Context),
+    -- | The current set of custom search results.
+    items :: (Core.Maybe [Result]),
+    -- | Unique identifier for the type of current object. For this API, it is customsearch#search.
+    kind :: (Core.Maybe Core.Text),
+    -- | The set of <https://developers.google.com/custom-search/docs/promotions promotions>. Present only if the custom search engine\'s configuration files define any promotions for the given query.
+    promotions :: (Core.Maybe [Promotion]),
+    -- | Query metadata for the previous, current, and next pages of results.
+    queries :: (Core.Maybe Search_Queries),
+    -- | Metadata about a search operation.
+    searchInformation :: (Core.Maybe Search_SearchInformation),
+    -- | Spell correction information for a query.
+    spelling :: (Core.Maybe Search_Spelling),
+    -- | OpenSearch template and URL.
+    url :: (Core.Maybe Search_Url)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Search' with the minimum fields required to make a request.
+newSearch ::
+  Search
+newSearch =
+  Search
+    { context = Core.Nothing,
+      items = Core.Nothing,
+      kind = Core.Nothing,
+      promotions = Core.Nothing,
+      queries = Core.Nothing,
+      searchInformation = Core.Nothing,
+      spelling = Core.Nothing,
+      url = Core.Nothing
+    }
+
+instance Core.FromJSON Search where
+  parseJSON =
+    Core.withObject
+      "Search"
+      ( \o ->
+          Search
+            Core.<$> (o Core..:? "context")
+            Core.<*> (o Core..:? "items")
+            Core.<*> (o Core..:? "kind")
+            Core.<*> (o Core..:? "promotions")
+            Core.<*> (o Core..:? "queries")
+            Core.<*> (o Core..:? "searchInformation")
+            Core.<*> (o Core..:? "spelling")
+            Core.<*> (o Core..:? "url")
+      )
+
+instance Core.ToJSON Search where
+  toJSON Search {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("context" Core..=) Core.<$> context,
+            ("items" Core..=) Core.<$> items,
+            ("kind" Core..=) Core.<$> kind,
+            ("promotions" Core..=) Core.<$> promotions,
+            ("queries" Core..=) Core.<$> queries,
+            ("searchInformation" Core..=) Core.<$> searchInformation,
+            ("spelling" Core..=) Core.<$> spelling,
+            ("url" Core..=) Core.<$> url
+          ]
+      )
+
+-- | Metadata and refinements associated with the given search engine, including: * The name of the search engine that was used for the query. * A set of <https://developers.google.com/custom-search/docs/refinements#create facet objects> (refinements) you can use for refining a search.
+--
+-- /See:/ 'newSearch_Context' smart constructor.
+newtype Search_Context = Search_Context
+  { -- | Properties of the object.
+    additional :: (Core.HashMap Core.Text Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Search_Context' with the minimum fields required to make a request.
+newSearch_Context ::
+  -- |  Properties of the object. See 'additional'.
+  Core.HashMap Core.Text Core.Value ->
+  Search_Context
+newSearch_Context additional =
+  Search_Context {additional = additional}
+
+instance Core.FromJSON Search_Context where
+  parseJSON =
+    Core.withObject
+      "Search_Context"
+      (\o -> Search_Context Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON Search_Context where
+  toJSON Search_Context {..} = Core.toJSON additional
+
+-- | Query metadata for the previous, current, and next pages of results.
+--
+-- /See:/ 'newSearch_Queries' smart constructor.
+data Search_Queries = Search_Queries
+  { -- | Metadata representing the next page of results, if applicable.
+    nextPage :: (Core.Maybe [Search_Queries_NextPageItem]),
+    -- | Metadata representing the previous page of results, if applicable.
+    previousPage :: (Core.Maybe [Search_Queries_PreviousPageItem]),
+    -- | Metadata representing the current request.
+    request' :: (Core.Maybe [Search_Queries_RequestItem])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Search_Queries' with the minimum fields required to make a request.
+newSearch_Queries ::
+  Search_Queries
+newSearch_Queries =
+  Search_Queries
+    { nextPage = Core.Nothing,
+      previousPage = Core.Nothing,
+      request' = Core.Nothing
+    }
+
+instance Core.FromJSON Search_Queries where
+  parseJSON =
+    Core.withObject
+      "Search_Queries"
+      ( \o ->
+          Search_Queries
+            Core.<$> (o Core..:? "nextPage")
+            Core.<*> (o Core..:? "previousPage")
+            Core.<*> (o Core..:? "request")
+      )
+
+instance Core.ToJSON Search_Queries where
+  toJSON Search_Queries {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("nextPage" Core..=) Core.<$> nextPage,
+            ("previousPage" Core..=) Core.<$> previousPage,
+            ("request" Core..=) Core.<$> request'
+          ]
+      )
+
+-- | Custom search request metadata.
+--
+-- /See:/ 'newSearch_Queries_NextPageItem' smart constructor.
+data Search_Queries_NextPageItem = Search_Queries_NextPageItem
+  { -- | Number of search results returned in this set.
+    count :: (Core.Maybe Core.Int32),
+    -- | Restricts search results to documents originating in a particular country. You may use <https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch Boolean operators> in the @cr@ parameter\'s value. Google WebSearch determines the country of a document by analyzing the following: * The top-level domain (TLD) of the document\'s URL. * The geographic location of the web server\'s IP address. See <https://developers.google.com/custom-search/docs/json_api_reference#countryCollections Country (cr) Parameter Values> for a list of valid values for this parameter.
+    cr :: (Core.Maybe Core.Text),
+    -- | The identifier of an engine created using the Programmable Search Engine <https://programmablesearchengine.google.com/ Control Panel>. This is a custom property not defined in the OpenSearch spec. This parameter is __required__.
+    cx :: (Core.Maybe Core.Text),
+    -- | Restricts results to URLs based on date. Supported values include: * @d[number]@: requests results from the specified number of past days. * @w[number]@: requests results from the specified number of past weeks. * @m[number]@: requests results from the specified number of past months. * @y[number]@: requests results from the specified number of past years.
+    dateRestrict :: (Core.Maybe Core.Text),
+    -- | Enables or disables the <https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch Simplified and Traditional Chinese Search> feature. Supported values are: * @0@: enabled (default) * @1@: disabled
+    disableCnTwTranslation :: (Core.Maybe Core.Text),
+    -- | Identifies a phrase that all documents in the search results must contain.
+    exactTerms :: (Core.Maybe Core.Text),
+    -- | Identifies a word or phrase that should not appear in any documents in the search results.
+    excludeTerms :: (Core.Maybe Core.Text),
+    -- | Restricts results to files of a specified extension. Filetypes supported by Google include: * Adobe Portable Document Format (@pdf@) * Adobe PostScript (@ps@) * Lotus 1-2-3 (@wk1@, @wk2@, @wk3@, @wk4@, @wk5@, @wki@, @wks@, @wku@) * Lotus WordPro (@lwp@) * Macwrite (@mw@) * Microsoft Excel (@xls@) * Microsoft PowerPoint (@ppt@) * Microsoft Word (@doc@) * Microsoft Works (@wks@, @wps@, @wdb@) * Microsoft Write (@wri@) * Rich Text Format (@rtf@) * Shockwave Flash (@swf@) * Text (@ans@, @txt@). Additional filetypes may be added in the future. An up-to-date list can always be found in Google\'s <https://support.google.com/webmasters/answer/35287 file type FAQ>.
+    fileType :: (Core.Maybe Core.Text),
+    -- | Activates or deactivates the automatic filtering of Google search results. See <https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering Automatic Filtering> for more information about Google\'s search results filters. Valid values for this parameter are: * @0@: Disabled * @1@: Enabled (default) __Note__: By default, Google applies filtering to all search results to improve the quality of those results.
+    filter :: (Core.Maybe Core.Text),
+    -- | Boosts search results whose country of origin matches the parameter value. See <https://developers.google.com/custom-search/docs/json_api_reference#countryCodes Country Codes> for a list of valid values. Specifying a @gl@ parameter value in WebSearch requests should improve the relevance of results. This is particularly true for international customers and, even more specifically, for customers in English-speaking countries other than the United States.
+    gl :: (Core.Maybe Core.Text),
+    -- | Specifies the Google domain (for example, google.com, google.de, or google.fr) to which the search should be limited.
+    googleHost :: (Core.Maybe Core.Text),
+    -- | Specifies the ending value for a search range. Use @cse:lowRange@ and @cse:highrange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    highRange :: (Core.Maybe Core.Text),
+    -- | Specifies the interface language (host language) of your user interface. Explicitly setting this parameter improves the performance and the quality of your search results. See the <https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages Interface Languages> section of <https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing Internationalizing Queries and Results Presentation> for more information, and <https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages Supported Interface Languages> for a list of supported languages.
+    hl :: (Core.Maybe Core.Text),
+    -- | Appends the specified query terms to the query, as if they were combined with a logical @AND@ operator.
+    hq :: (Core.Maybe Core.Text),
+    -- | Restricts results to images of a specified color type. Supported values are: * @mono@ (black and white) * @gray@ (grayscale) * @color@ (color)
+    imgColorType :: (Core.Maybe Core.Text),
+    -- | Restricts results to images with a specific dominant color. Supported values are: * @red@ * @orange@ * @yellow@ * @green@ * @teal@ * @blue@ * @purple@ * @pink@ * @white@ * @gray@ * @black@ * @brown@
+    imgDominantColor :: (Core.Maybe Core.Text),
+    -- | Restricts results to images of a specified size. Supported values are: * @icon@ (small) * @small | medium | large | xlarge@ (medium) * @xxlarge@ (large) * @huge@ (extra-large)
+    imgSize :: (Core.Maybe Core.Text),
+    -- | Restricts results to images of a specified type. Supported values are: * @clipart@ (Clip art) * @face@ (Face) * @lineart@ (Line drawing) * @photo@ (Photo) * @animated@ (Animated) * @stock@ (Stock)
+    imgType :: (Core.Maybe Core.Text),
+    -- | The character encoding supported for search requests.
+    inputEncoding :: (Core.Maybe Core.Text),
+    -- | The language of the search results.
+    language :: (Core.Maybe Core.Text),
+    -- | Specifies that all results should contain a link to a specific URL.
+    linkSite :: (Core.Maybe Core.Text),
+    -- | Specifies the starting value for a search range. Use @cse:lowRange@ and @cse:highrange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    lowRange :: (Core.Maybe Core.Text),
+    -- | Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms. You can also use the <https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch Boolean OR> query term for this type of query.
+    orTerms :: (Core.Maybe Core.Text),
+    -- | The character encoding supported for search results.
+    outputEncoding :: (Core.Maybe Core.Text),
+    -- | Specifies that all search results should be pages that are related to the specified URL. The parameter value should be a URL.
+    relatedSite :: (Core.Maybe Core.Text),
+    -- | Filters based on licensing. Supported values include: * @cc_publicdomain@ * @cc_attribute@ * @cc_sharealike@ * @cc_noncommercial@ * @cc_nonderived@
+    rights :: (Core.Maybe Core.Text),
+    -- | Specifies the <https://developers.google.com/custom-search/docs/json_api_reference#safeSearchLevels SafeSearch level> used for filtering out adult results. This is a custom property not defined in the OpenSearch spec. Valid parameter values are: * @\"off\"@: Disable SafeSearch * @\"active\"@: Enable SafeSearch
+    safe :: (Core.Maybe Core.Text),
+    -- | The search terms entered by the user.
+    searchTerms :: (Core.Maybe Core.Text),
+    -- | Allowed values are @web@ or @image@. If unspecified, results are limited to webpages.
+    searchType :: (Core.Maybe Core.Text),
+    -- | Restricts results to URLs from a specified site.
+    siteSearch :: (Core.Maybe Core.Text),
+    -- | Specifies whether to include or exclude results from the site named in the @sitesearch@ parameter. Supported values are: * @i@: include content from site * @e@: exclude content from site
+    siteSearchFilter :: (Core.Maybe Core.Text),
+    -- | Specifies that results should be sorted according to the specified expression. For example, sort by date.
+    sort :: (Core.Maybe Core.Text),
+    -- | The index of the current set of search results into the total set of results, where the index of the first result is 1.
+    startIndex :: (Core.Maybe Core.Int32),
+    -- | The page number of this set of results, where the page length is set by the @count@ property.
+    startPage :: (Core.Maybe Core.Int32),
+    -- | A description of the query.
+    title :: (Core.Maybe Core.Text),
+    -- | Estimated number of total search results. May not be accurate.
+    totalResults :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Search_Queries_NextPageItem' with the minimum fields required to make a request.
+newSearch_Queries_NextPageItem ::
+  Search_Queries_NextPageItem
+newSearch_Queries_NextPageItem =
+  Search_Queries_NextPageItem
+    { count = Core.Nothing,
+      cr = Core.Nothing,
+      cx = Core.Nothing,
+      dateRestrict = Core.Nothing,
+      disableCnTwTranslation = Core.Nothing,
+      exactTerms = Core.Nothing,
+      excludeTerms = Core.Nothing,
+      fileType = Core.Nothing,
+      filter = Core.Nothing,
+      gl = Core.Nothing,
+      googleHost = Core.Nothing,
+      highRange = Core.Nothing,
+      hl = Core.Nothing,
+      hq = Core.Nothing,
+      imgColorType = Core.Nothing,
+      imgDominantColor = Core.Nothing,
+      imgSize = Core.Nothing,
+      imgType = Core.Nothing,
+      inputEncoding = Core.Nothing,
+      language = Core.Nothing,
+      linkSite = Core.Nothing,
+      lowRange = Core.Nothing,
+      orTerms = Core.Nothing,
+      outputEncoding = Core.Nothing,
+      relatedSite = Core.Nothing,
+      rights = Core.Nothing,
+      safe = Core.Nothing,
+      searchTerms = Core.Nothing,
+      searchType = Core.Nothing,
+      siteSearch = Core.Nothing,
+      siteSearchFilter = Core.Nothing,
+      sort = Core.Nothing,
+      startIndex = Core.Nothing,
+      startPage = Core.Nothing,
+      title = Core.Nothing,
+      totalResults = Core.Nothing
+    }
+
+instance Core.FromJSON Search_Queries_NextPageItem where
+  parseJSON =
+    Core.withObject
+      "Search_Queries_NextPageItem"
+      ( \o ->
+          Search_Queries_NextPageItem
+            Core.<$> (o Core..:? "count")
+            Core.<*> (o Core..:? "cr")
+            Core.<*> (o Core..:? "cx")
+            Core.<*> (o Core..:? "dateRestrict")
+            Core.<*> (o Core..:? "disableCnTwTranslation")
+            Core.<*> (o Core..:? "exactTerms")
+            Core.<*> (o Core..:? "excludeTerms")
+            Core.<*> (o Core..:? "fileType")
+            Core.<*> (o Core..:? "filter")
+            Core.<*> (o Core..:? "gl")
+            Core.<*> (o Core..:? "googleHost")
+            Core.<*> (o Core..:? "highRange")
+            Core.<*> (o Core..:? "hl")
+            Core.<*> (o Core..:? "hq")
+            Core.<*> (o Core..:? "imgColorType")
+            Core.<*> (o Core..:? "imgDominantColor")
+            Core.<*> (o Core..:? "imgSize")
+            Core.<*> (o Core..:? "imgType")
+            Core.<*> (o Core..:? "inputEncoding")
+            Core.<*> (o Core..:? "language")
+            Core.<*> (o Core..:? "linkSite")
+            Core.<*> (o Core..:? "lowRange")
+            Core.<*> (o Core..:? "orTerms")
+            Core.<*> (o Core..:? "outputEncoding")
+            Core.<*> (o Core..:? "relatedSite")
+            Core.<*> (o Core..:? "rights")
+            Core.<*> (o Core..:? "safe")
+            Core.<*> (o Core..:? "searchTerms")
+            Core.<*> (o Core..:? "searchType")
+            Core.<*> (o Core..:? "siteSearch")
+            Core.<*> (o Core..:? "siteSearchFilter")
+            Core.<*> (o Core..:? "sort")
+            Core.<*> (o Core..:? "startIndex")
+            Core.<*> (o Core..:? "startPage")
+            Core.<*> (o Core..:? "title")
+            Core.<*> (o Core..:? "totalResults" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON Search_Queries_NextPageItem where
+  toJSON Search_Queries_NextPageItem {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("count" Core..=) Core.<$> count,
+            ("cr" Core..=) Core.<$> cr,
+            ("cx" Core..=) Core.<$> cx,
+            ("dateRestrict" Core..=) Core.<$> dateRestrict,
+            ("disableCnTwTranslation" Core..=) Core.<$> disableCnTwTranslation,
+            ("exactTerms" Core..=) Core.<$> exactTerms,
+            ("excludeTerms" Core..=) Core.<$> excludeTerms,
+            ("fileType" Core..=) Core.<$> fileType,
+            ("filter" Core..=) Core.<$> filter,
+            ("gl" Core..=) Core.<$> gl,
+            ("googleHost" Core..=) Core.<$> googleHost,
+            ("highRange" Core..=) Core.<$> highRange,
+            ("hl" Core..=) Core.<$> hl,
+            ("hq" Core..=) Core.<$> hq,
+            ("imgColorType" Core..=) Core.<$> imgColorType,
+            ("imgDominantColor" Core..=) Core.<$> imgDominantColor,
+            ("imgSize" Core..=) Core.<$> imgSize,
+            ("imgType" Core..=) Core.<$> imgType,
+            ("inputEncoding" Core..=) Core.<$> inputEncoding,
+            ("language" Core..=) Core.<$> language,
+            ("linkSite" Core..=) Core.<$> linkSite,
+            ("lowRange" Core..=) Core.<$> lowRange,
+            ("orTerms" Core..=) Core.<$> orTerms,
+            ("outputEncoding" Core..=) Core.<$> outputEncoding,
+            ("relatedSite" Core..=) Core.<$> relatedSite,
+            ("rights" Core..=) Core.<$> rights,
+            ("safe" Core..=) Core.<$> safe,
+            ("searchTerms" Core..=) Core.<$> searchTerms,
+            ("searchType" Core..=) Core.<$> searchType,
+            ("siteSearch" Core..=) Core.<$> siteSearch,
+            ("siteSearchFilter" Core..=) Core.<$> siteSearchFilter,
+            ("sort" Core..=) Core.<$> sort,
+            ("startIndex" Core..=) Core.<$> startIndex,
+            ("startPage" Core..=) Core.<$> startPage,
+            ("title" Core..=) Core.<$> title,
+            ("totalResults" Core..=) Core.. Core.AsText Core.<$> totalResults
+          ]
+      )
+
+-- | Custom search request metadata.
+--
+-- /See:/ 'newSearch_Queries_PreviousPageItem' smart constructor.
+data Search_Queries_PreviousPageItem = Search_Queries_PreviousPageItem
+  { -- | Number of search results returned in this set.
+    count :: (Core.Maybe Core.Int32),
+    -- | Restricts search results to documents originating in a particular country. You may use <https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch Boolean operators> in the @cr@ parameter\'s value. Google WebSearch determines the country of a document by analyzing the following: * The top-level domain (TLD) of the document\'s URL. * The geographic location of the web server\'s IP address. See <https://developers.google.com/custom-search/docs/json_api_reference#countryCollections Country (cr) Parameter Values> for a list of valid values for this parameter.
+    cr :: (Core.Maybe Core.Text),
+    -- | The identifier of an engine created using the Programmable Search Engine <https://programmablesearchengine.google.com/ Control Panel>. This is a custom property not defined in the OpenSearch spec. This parameter is __required__.
+    cx :: (Core.Maybe Core.Text),
+    -- | Restricts results to URLs based on date. Supported values include: * @d[number]@: requests results from the specified number of past days. * @w[number]@: requests results from the specified number of past weeks. * @m[number]@: requests results from the specified number of past months. * @y[number]@: requests results from the specified number of past years.
+    dateRestrict :: (Core.Maybe Core.Text),
+    -- | Enables or disables the <https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch Simplified and Traditional Chinese Search> feature. Supported values are: * @0@: enabled (default) * @1@: disabled
+    disableCnTwTranslation :: (Core.Maybe Core.Text),
+    -- | Identifies a phrase that all documents in the search results must contain.
+    exactTerms :: (Core.Maybe Core.Text),
+    -- | Identifies a word or phrase that should not appear in any documents in the search results.
+    excludeTerms :: (Core.Maybe Core.Text),
+    -- | Restricts results to files of a specified extension. Filetypes supported by Google include: * Adobe Portable Document Format (@pdf@) * Adobe PostScript (@ps@) * Lotus 1-2-3 (@wk1@, @wk2@, @wk3@, @wk4@, @wk5@, @wki@, @wks@, @wku@) * Lotus WordPro (@lwp@) * Macwrite (@mw@) * Microsoft Excel (@xls@) * Microsoft PowerPoint (@ppt@) * Microsoft Word (@doc@) * Microsoft Works (@wks@, @wps@, @wdb@) * Microsoft Write (@wri@) * Rich Text Format (@rtf@) * Shockwave Flash (@swf@) * Text (@ans@, @txt@). Additional filetypes may be added in the future. An up-to-date list can always be found in Google\'s <https://support.google.com/webmasters/answer/35287 file type FAQ>.
+    fileType :: (Core.Maybe Core.Text),
+    -- | Activates or deactivates the automatic filtering of Google search results. See <https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering Automatic Filtering> for more information about Google\'s search results filters. Valid values for this parameter are: * @0@: Disabled * @1@: Enabled (default) __Note__: By default, Google applies filtering to all search results to improve the quality of those results.
+    filter :: (Core.Maybe Core.Text),
+    -- | Boosts search results whose country of origin matches the parameter value. See <https://developers.google.com/custom-search/docs/json_api_reference#countryCodes Country Codes> for a list of valid values. Specifying a @gl@ parameter value in WebSearch requests should improve the relevance of results. This is particularly true for international customers and, even more specifically, for customers in English-speaking countries other than the United States.
+    gl :: (Core.Maybe Core.Text),
+    -- | Specifies the Google domain (for example, google.com, google.de, or google.fr) to which the search should be limited.
+    googleHost :: (Core.Maybe Core.Text),
+    -- | Specifies the ending value for a search range. Use @cse:lowRange@ and @cse:highrange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    highRange :: (Core.Maybe Core.Text),
+    -- | Specifies the interface language (host language) of your user interface. Explicitly setting this parameter improves the performance and the quality of your search results. See the <https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages Interface Languages> section of <https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing Internationalizing Queries and Results Presentation> for more information, and <https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages Supported Interface Languages> for a list of supported languages.
+    hl :: (Core.Maybe Core.Text),
+    -- | Appends the specified query terms to the query, as if they were combined with a logical @AND@ operator.
+    hq :: (Core.Maybe Core.Text),
+    -- | Restricts results to images of a specified color type. Supported values are: * @mono@ (black and white) * @gray@ (grayscale) * @color@ (color)
+    imgColorType :: (Core.Maybe Core.Text),
+    -- | Restricts results to images with a specific dominant color. Supported values are: * @red@ * @orange@ * @yellow@ * @green@ * @teal@ * @blue@ * @purple@ * @pink@ * @white@ * @gray@ * @black@ * @brown@
+    imgDominantColor :: (Core.Maybe Core.Text),
+    -- | Restricts results to images of a specified size. Supported values are: * @icon@ (small) * @small | medium | large | xlarge@ (medium) * @xxlarge@ (large) * @huge@ (extra-large)
+    imgSize :: (Core.Maybe Core.Text),
+    -- | Restricts results to images of a specified type. Supported values are: * @clipart@ (Clip art) * @face@ (Face) * @lineart@ (Line drawing) * @photo@ (Photo) * @animated@ (Animated) * @stock@ (Stock)
+    imgType :: (Core.Maybe Core.Text),
+    -- | The character encoding supported for search requests.
+    inputEncoding :: (Core.Maybe Core.Text),
+    -- | The language of the search results.
+    language :: (Core.Maybe Core.Text),
+    -- | Specifies that all results should contain a link to a specific URL.
+    linkSite :: (Core.Maybe Core.Text),
+    -- | Specifies the starting value for a search range. Use @cse:lowRange@ and @cse:highrange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    lowRange :: (Core.Maybe Core.Text),
+    -- | Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms. You can also use the <https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch Boolean OR> query term for this type of query.
+    orTerms :: (Core.Maybe Core.Text),
+    -- | The character encoding supported for search results.
+    outputEncoding :: (Core.Maybe Core.Text),
+    -- | Specifies that all search results should be pages that are related to the specified URL. The parameter value should be a URL.
+    relatedSite :: (Core.Maybe Core.Text),
+    -- | Filters based on licensing. Supported values include: * @cc_publicdomain@ * @cc_attribute@ * @cc_sharealike@ * @cc_noncommercial@ * @cc_nonderived@
+    rights :: (Core.Maybe Core.Text),
+    -- | Specifies the <https://developers.google.com/custom-search/docs/json_api_reference#safeSearchLevels SafeSearch level> used for filtering out adult results. This is a custom property not defined in the OpenSearch spec. Valid parameter values are: * @\"off\"@: Disable SafeSearch * @\"active\"@: Enable SafeSearch
+    safe :: (Core.Maybe Core.Text),
+    -- | The search terms entered by the user.
+    searchTerms :: (Core.Maybe Core.Text),
+    -- | Allowed values are @web@ or @image@. If unspecified, results are limited to webpages.
+    searchType :: (Core.Maybe Core.Text),
+    -- | Restricts results to URLs from a specified site.
+    siteSearch :: (Core.Maybe Core.Text),
+    -- | Specifies whether to include or exclude results from the site named in the @sitesearch@ parameter. Supported values are: * @i@: include content from site * @e@: exclude content from site
+    siteSearchFilter :: (Core.Maybe Core.Text),
+    -- | Specifies that results should be sorted according to the specified expression. For example, sort by date.
+    sort :: (Core.Maybe Core.Text),
+    -- | The index of the current set of search results into the total set of results, where the index of the first result is 1.
+    startIndex :: (Core.Maybe Core.Int32),
+    -- | The page number of this set of results, where the page length is set by the @count@ property.
+    startPage :: (Core.Maybe Core.Int32),
+    -- | A description of the query.
+    title :: (Core.Maybe Core.Text),
+    -- | Estimated number of total search results. May not be accurate.
+    totalResults :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Search_Queries_PreviousPageItem' with the minimum fields required to make a request.
+newSearch_Queries_PreviousPageItem ::
+  Search_Queries_PreviousPageItem
+newSearch_Queries_PreviousPageItem =
+  Search_Queries_PreviousPageItem
+    { count = Core.Nothing,
+      cr = Core.Nothing,
+      cx = Core.Nothing,
+      dateRestrict = Core.Nothing,
+      disableCnTwTranslation = Core.Nothing,
+      exactTerms = Core.Nothing,
+      excludeTerms = Core.Nothing,
+      fileType = Core.Nothing,
+      filter = Core.Nothing,
+      gl = Core.Nothing,
+      googleHost = Core.Nothing,
+      highRange = Core.Nothing,
+      hl = Core.Nothing,
+      hq = Core.Nothing,
+      imgColorType = Core.Nothing,
+      imgDominantColor = Core.Nothing,
+      imgSize = Core.Nothing,
+      imgType = Core.Nothing,
+      inputEncoding = Core.Nothing,
+      language = Core.Nothing,
+      linkSite = Core.Nothing,
+      lowRange = Core.Nothing,
+      orTerms = Core.Nothing,
+      outputEncoding = Core.Nothing,
+      relatedSite = Core.Nothing,
+      rights = Core.Nothing,
+      safe = Core.Nothing,
+      searchTerms = Core.Nothing,
+      searchType = Core.Nothing,
+      siteSearch = Core.Nothing,
+      siteSearchFilter = Core.Nothing,
+      sort = Core.Nothing,
+      startIndex = Core.Nothing,
+      startPage = Core.Nothing,
+      title = Core.Nothing,
+      totalResults = Core.Nothing
+    }
+
+instance Core.FromJSON Search_Queries_PreviousPageItem where
+  parseJSON =
+    Core.withObject
+      "Search_Queries_PreviousPageItem"
+      ( \o ->
+          Search_Queries_PreviousPageItem
+            Core.<$> (o Core..:? "count")
+            Core.<*> (o Core..:? "cr")
+            Core.<*> (o Core..:? "cx")
+            Core.<*> (o Core..:? "dateRestrict")
+            Core.<*> (o Core..:? "disableCnTwTranslation")
+            Core.<*> (o Core..:? "exactTerms")
+            Core.<*> (o Core..:? "excludeTerms")
+            Core.<*> (o Core..:? "fileType")
+            Core.<*> (o Core..:? "filter")
+            Core.<*> (o Core..:? "gl")
+            Core.<*> (o Core..:? "googleHost")
+            Core.<*> (o Core..:? "highRange")
+            Core.<*> (o Core..:? "hl")
+            Core.<*> (o Core..:? "hq")
+            Core.<*> (o Core..:? "imgColorType")
+            Core.<*> (o Core..:? "imgDominantColor")
+            Core.<*> (o Core..:? "imgSize")
+            Core.<*> (o Core..:? "imgType")
+            Core.<*> (o Core..:? "inputEncoding")
+            Core.<*> (o Core..:? "language")
+            Core.<*> (o Core..:? "linkSite")
+            Core.<*> (o Core..:? "lowRange")
+            Core.<*> (o Core..:? "orTerms")
+            Core.<*> (o Core..:? "outputEncoding")
+            Core.<*> (o Core..:? "relatedSite")
+            Core.<*> (o Core..:? "rights")
+            Core.<*> (o Core..:? "safe")
+            Core.<*> (o Core..:? "searchTerms")
+            Core.<*> (o Core..:? "searchType")
+            Core.<*> (o Core..:? "siteSearch")
+            Core.<*> (o Core..:? "siteSearchFilter")
+            Core.<*> (o Core..:? "sort")
+            Core.<*> (o Core..:? "startIndex")
+            Core.<*> (o Core..:? "startPage")
+            Core.<*> (o Core..:? "title")
+            Core.<*> (o Core..:? "totalResults" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON Search_Queries_PreviousPageItem where
+  toJSON Search_Queries_PreviousPageItem {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("count" Core..=) Core.<$> count,
+            ("cr" Core..=) Core.<$> cr,
+            ("cx" Core..=) Core.<$> cx,
+            ("dateRestrict" Core..=) Core.<$> dateRestrict,
+            ("disableCnTwTranslation" Core..=) Core.<$> disableCnTwTranslation,
+            ("exactTerms" Core..=) Core.<$> exactTerms,
+            ("excludeTerms" Core..=) Core.<$> excludeTerms,
+            ("fileType" Core..=) Core.<$> fileType,
+            ("filter" Core..=) Core.<$> filter,
+            ("gl" Core..=) Core.<$> gl,
+            ("googleHost" Core..=) Core.<$> googleHost,
+            ("highRange" Core..=) Core.<$> highRange,
+            ("hl" Core..=) Core.<$> hl,
+            ("hq" Core..=) Core.<$> hq,
+            ("imgColorType" Core..=) Core.<$> imgColorType,
+            ("imgDominantColor" Core..=) Core.<$> imgDominantColor,
+            ("imgSize" Core..=) Core.<$> imgSize,
+            ("imgType" Core..=) Core.<$> imgType,
+            ("inputEncoding" Core..=) Core.<$> inputEncoding,
+            ("language" Core..=) Core.<$> language,
+            ("linkSite" Core..=) Core.<$> linkSite,
+            ("lowRange" Core..=) Core.<$> lowRange,
+            ("orTerms" Core..=) Core.<$> orTerms,
+            ("outputEncoding" Core..=) Core.<$> outputEncoding,
+            ("relatedSite" Core..=) Core.<$> relatedSite,
+            ("rights" Core..=) Core.<$> rights,
+            ("safe" Core..=) Core.<$> safe,
+            ("searchTerms" Core..=) Core.<$> searchTerms,
+            ("searchType" Core..=) Core.<$> searchType,
+            ("siteSearch" Core..=) Core.<$> siteSearch,
+            ("siteSearchFilter" Core..=) Core.<$> siteSearchFilter,
+            ("sort" Core..=) Core.<$> sort,
+            ("startIndex" Core..=) Core.<$> startIndex,
+            ("startPage" Core..=) Core.<$> startPage,
+            ("title" Core..=) Core.<$> title,
+            ("totalResults" Core..=) Core.. Core.AsText Core.<$> totalResults
+          ]
+      )
+
+-- | Custom search request metadata.
+--
+-- /See:/ 'newSearch_Queries_RequestItem' smart constructor.
+data Search_Queries_RequestItem = Search_Queries_RequestItem
+  { -- | Number of search results returned in this set.
+    count :: (Core.Maybe Core.Int32),
+    -- | Restricts search results to documents originating in a particular country. You may use <https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch Boolean operators> in the @cr@ parameter\'s value. Google WebSearch determines the country of a document by analyzing the following: * The top-level domain (TLD) of the document\'s URL. * The geographic location of the web server\'s IP address. See <https://developers.google.com/custom-search/docs/json_api_reference#countryCollections Country (cr) Parameter Values> for a list of valid values for this parameter.
+    cr :: (Core.Maybe Core.Text),
+    -- | The identifier of an engine created using the Programmable Search Engine <https://programmablesearchengine.google.com/ Control Panel>. This is a custom property not defined in the OpenSearch spec. This parameter is __required__.
+    cx :: (Core.Maybe Core.Text),
+    -- | Restricts results to URLs based on date. Supported values include: * @d[number]@: requests results from the specified number of past days. * @w[number]@: requests results from the specified number of past weeks. * @m[number]@: requests results from the specified number of past months. * @y[number]@: requests results from the specified number of past years.
+    dateRestrict :: (Core.Maybe Core.Text),
+    -- | Enables or disables the <https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch Simplified and Traditional Chinese Search> feature. Supported values are: * @0@: enabled (default) * @1@: disabled
+    disableCnTwTranslation :: (Core.Maybe Core.Text),
+    -- | Identifies a phrase that all documents in the search results must contain.
+    exactTerms :: (Core.Maybe Core.Text),
+    -- | Identifies a word or phrase that should not appear in any documents in the search results.
+    excludeTerms :: (Core.Maybe Core.Text),
+    -- | Restricts results to files of a specified extension. Filetypes supported by Google include: * Adobe Portable Document Format (@pdf@) * Adobe PostScript (@ps@) * Lotus 1-2-3 (@wk1@, @wk2@, @wk3@, @wk4@, @wk5@, @wki@, @wks@, @wku@) * Lotus WordPro (@lwp@) * Macwrite (@mw@) * Microsoft Excel (@xls@) * Microsoft PowerPoint (@ppt@) * Microsoft Word (@doc@) * Microsoft Works (@wks@, @wps@, @wdb@) * Microsoft Write (@wri@) * Rich Text Format (@rtf@) * Shockwave Flash (@swf@) * Text (@ans@, @txt@). Additional filetypes may be added in the future. An up-to-date list can always be found in Google\'s <https://support.google.com/webmasters/answer/35287 file type FAQ>.
+    fileType :: (Core.Maybe Core.Text),
+    -- | Activates or deactivates the automatic filtering of Google search results. See <https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering Automatic Filtering> for more information about Google\'s search results filters. Valid values for this parameter are: * @0@: Disabled * @1@: Enabled (default) __Note__: By default, Google applies filtering to all search results to improve the quality of those results.
+    filter :: (Core.Maybe Core.Text),
+    -- | Boosts search results whose country of origin matches the parameter value. See <https://developers.google.com/custom-search/docs/json_api_reference#countryCodes Country Codes> for a list of valid values. Specifying a @gl@ parameter value in WebSearch requests should improve the relevance of results. This is particularly true for international customers and, even more specifically, for customers in English-speaking countries other than the United States.
+    gl :: (Core.Maybe Core.Text),
+    -- | Specifies the Google domain (for example, google.com, google.de, or google.fr) to which the search should be limited.
+    googleHost :: (Core.Maybe Core.Text),
+    -- | Specifies the ending value for a search range. Use @cse:lowRange@ and @cse:highrange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    highRange :: (Core.Maybe Core.Text),
+    -- | Specifies the interface language (host language) of your user interface. Explicitly setting this parameter improves the performance and the quality of your search results. See the <https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages Interface Languages> section of <https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing Internationalizing Queries and Results Presentation> for more information, and <https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages Supported Interface Languages> for a list of supported languages.
+    hl :: (Core.Maybe Core.Text),
+    -- | Appends the specified query terms to the query, as if they were combined with a logical @AND@ operator.
+    hq :: (Core.Maybe Core.Text),
+    -- | Restricts results to images of a specified color type. Supported values are: * @mono@ (black and white) * @gray@ (grayscale) * @color@ (color)
+    imgColorType :: (Core.Maybe Core.Text),
+    -- | Restricts results to images with a specific dominant color. Supported values are: * @red@ * @orange@ * @yellow@ * @green@ * @teal@ * @blue@ * @purple@ * @pink@ * @white@ * @gray@ * @black@ * @brown@
+    imgDominantColor :: (Core.Maybe Core.Text),
+    -- | Restricts results to images of a specified size. Supported values are: * @icon@ (small) * @small | medium | large | xlarge@ (medium) * @xxlarge@ (large) * @huge@ (extra-large)
+    imgSize :: (Core.Maybe Core.Text),
+    -- | Restricts results to images of a specified type. Supported values are: * @clipart@ (Clip art) * @face@ (Face) * @lineart@ (Line drawing) * @photo@ (Photo) * @animated@ (Animated) * @stock@ (Stock)
+    imgType :: (Core.Maybe Core.Text),
+    -- | The character encoding supported for search requests.
+    inputEncoding :: (Core.Maybe Core.Text),
+    -- | The language of the search results.
+    language :: (Core.Maybe Core.Text),
+    -- | Specifies that all results should contain a link to a specific URL.
+    linkSite :: (Core.Maybe Core.Text),
+    -- | Specifies the starting value for a search range. Use @cse:lowRange@ and @cse:highrange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    lowRange :: (Core.Maybe Core.Text),
+    -- | Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms. You can also use the <https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch Boolean OR> query term for this type of query.
+    orTerms :: (Core.Maybe Core.Text),
+    -- | The character encoding supported for search results.
+    outputEncoding :: (Core.Maybe Core.Text),
+    -- | Specifies that all search results should be pages that are related to the specified URL. The parameter value should be a URL.
+    relatedSite :: (Core.Maybe Core.Text),
+    -- | Filters based on licensing. Supported values include: * @cc_publicdomain@ * @cc_attribute@ * @cc_sharealike@ * @cc_noncommercial@ * @cc_nonderived@
+    rights :: (Core.Maybe Core.Text),
+    -- | Specifies the <https://developers.google.com/custom-search/docs/json_api_reference#safeSearchLevels SafeSearch level> used for filtering out adult results. This is a custom property not defined in the OpenSearch spec. Valid parameter values are: * @\"off\"@: Disable SafeSearch * @\"active\"@: Enable SafeSearch
+    safe :: (Core.Maybe Core.Text),
+    -- | The search terms entered by the user.
+    searchTerms :: (Core.Maybe Core.Text),
+    -- | Allowed values are @web@ or @image@. If unspecified, results are limited to webpages.
+    searchType :: (Core.Maybe Core.Text),
+    -- | Restricts results to URLs from a specified site.
+    siteSearch :: (Core.Maybe Core.Text),
+    -- | Specifies whether to include or exclude results from the site named in the @sitesearch@ parameter. Supported values are: * @i@: include content from site * @e@: exclude content from site
+    siteSearchFilter :: (Core.Maybe Core.Text),
+    -- | Specifies that results should be sorted according to the specified expression. For example, sort by date.
+    sort :: (Core.Maybe Core.Text),
+    -- | The index of the current set of search results into the total set of results, where the index of the first result is 1.
+    startIndex :: (Core.Maybe Core.Int32),
+    -- | The page number of this set of results, where the page length is set by the @count@ property.
+    startPage :: (Core.Maybe Core.Int32),
+    -- | A description of the query.
+    title :: (Core.Maybe Core.Text),
+    -- | Estimated number of total search results. May not be accurate.
+    totalResults :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Search_Queries_RequestItem' with the minimum fields required to make a request.
+newSearch_Queries_RequestItem ::
+  Search_Queries_RequestItem
+newSearch_Queries_RequestItem =
+  Search_Queries_RequestItem
+    { count = Core.Nothing,
+      cr = Core.Nothing,
+      cx = Core.Nothing,
+      dateRestrict = Core.Nothing,
+      disableCnTwTranslation = Core.Nothing,
+      exactTerms = Core.Nothing,
+      excludeTerms = Core.Nothing,
+      fileType = Core.Nothing,
+      filter = Core.Nothing,
+      gl = Core.Nothing,
+      googleHost = Core.Nothing,
+      highRange = Core.Nothing,
+      hl = Core.Nothing,
+      hq = Core.Nothing,
+      imgColorType = Core.Nothing,
+      imgDominantColor = Core.Nothing,
+      imgSize = Core.Nothing,
+      imgType = Core.Nothing,
+      inputEncoding = Core.Nothing,
+      language = Core.Nothing,
+      linkSite = Core.Nothing,
+      lowRange = Core.Nothing,
+      orTerms = Core.Nothing,
+      outputEncoding = Core.Nothing,
+      relatedSite = Core.Nothing,
+      rights = Core.Nothing,
+      safe = Core.Nothing,
+      searchTerms = Core.Nothing,
+      searchType = Core.Nothing,
+      siteSearch = Core.Nothing,
+      siteSearchFilter = Core.Nothing,
+      sort = Core.Nothing,
+      startIndex = Core.Nothing,
+      startPage = Core.Nothing,
+      title = Core.Nothing,
+      totalResults = Core.Nothing
+    }
+
+instance Core.FromJSON Search_Queries_RequestItem where
+  parseJSON =
+    Core.withObject
+      "Search_Queries_RequestItem"
+      ( \o ->
+          Search_Queries_RequestItem
+            Core.<$> (o Core..:? "count")
+            Core.<*> (o Core..:? "cr")
+            Core.<*> (o Core..:? "cx")
+            Core.<*> (o Core..:? "dateRestrict")
+            Core.<*> (o Core..:? "disableCnTwTranslation")
+            Core.<*> (o Core..:? "exactTerms")
+            Core.<*> (o Core..:? "excludeTerms")
+            Core.<*> (o Core..:? "fileType")
+            Core.<*> (o Core..:? "filter")
+            Core.<*> (o Core..:? "gl")
+            Core.<*> (o Core..:? "googleHost")
+            Core.<*> (o Core..:? "highRange")
+            Core.<*> (o Core..:? "hl")
+            Core.<*> (o Core..:? "hq")
+            Core.<*> (o Core..:? "imgColorType")
+            Core.<*> (o Core..:? "imgDominantColor")
+            Core.<*> (o Core..:? "imgSize")
+            Core.<*> (o Core..:? "imgType")
+            Core.<*> (o Core..:? "inputEncoding")
+            Core.<*> (o Core..:? "language")
+            Core.<*> (o Core..:? "linkSite")
+            Core.<*> (o Core..:? "lowRange")
+            Core.<*> (o Core..:? "orTerms")
+            Core.<*> (o Core..:? "outputEncoding")
+            Core.<*> (o Core..:? "relatedSite")
+            Core.<*> (o Core..:? "rights")
+            Core.<*> (o Core..:? "safe")
+            Core.<*> (o Core..:? "searchTerms")
+            Core.<*> (o Core..:? "searchType")
+            Core.<*> (o Core..:? "siteSearch")
+            Core.<*> (o Core..:? "siteSearchFilter")
+            Core.<*> (o Core..:? "sort")
+            Core.<*> (o Core..:? "startIndex")
+            Core.<*> (o Core..:? "startPage")
+            Core.<*> (o Core..:? "title")
+            Core.<*> (o Core..:? "totalResults" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON Search_Queries_RequestItem where
+  toJSON Search_Queries_RequestItem {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("count" Core..=) Core.<$> count,
+            ("cr" Core..=) Core.<$> cr,
+            ("cx" Core..=) Core.<$> cx,
+            ("dateRestrict" Core..=) Core.<$> dateRestrict,
+            ("disableCnTwTranslation" Core..=) Core.<$> disableCnTwTranslation,
+            ("exactTerms" Core..=) Core.<$> exactTerms,
+            ("excludeTerms" Core..=) Core.<$> excludeTerms,
+            ("fileType" Core..=) Core.<$> fileType,
+            ("filter" Core..=) Core.<$> filter,
+            ("gl" Core..=) Core.<$> gl,
+            ("googleHost" Core..=) Core.<$> googleHost,
+            ("highRange" Core..=) Core.<$> highRange,
+            ("hl" Core..=) Core.<$> hl,
+            ("hq" Core..=) Core.<$> hq,
+            ("imgColorType" Core..=) Core.<$> imgColorType,
+            ("imgDominantColor" Core..=) Core.<$> imgDominantColor,
+            ("imgSize" Core..=) Core.<$> imgSize,
+            ("imgType" Core..=) Core.<$> imgType,
+            ("inputEncoding" Core..=) Core.<$> inputEncoding,
+            ("language" Core..=) Core.<$> language,
+            ("linkSite" Core..=) Core.<$> linkSite,
+            ("lowRange" Core..=) Core.<$> lowRange,
+            ("orTerms" Core..=) Core.<$> orTerms,
+            ("outputEncoding" Core..=) Core.<$> outputEncoding,
+            ("relatedSite" Core..=) Core.<$> relatedSite,
+            ("rights" Core..=) Core.<$> rights,
+            ("safe" Core..=) Core.<$> safe,
+            ("searchTerms" Core..=) Core.<$> searchTerms,
+            ("searchType" Core..=) Core.<$> searchType,
+            ("siteSearch" Core..=) Core.<$> siteSearch,
+            ("siteSearchFilter" Core..=) Core.<$> siteSearchFilter,
+            ("sort" Core..=) Core.<$> sort,
+            ("startIndex" Core..=) Core.<$> startIndex,
+            ("startPage" Core..=) Core.<$> startPage,
+            ("title" Core..=) Core.<$> title,
+            ("totalResults" Core..=) Core.. Core.AsText Core.<$> totalResults
+          ]
+      )
+
+-- | Metadata about a search operation.
+--
+-- /See:/ 'newSearch_SearchInformation' smart constructor.
+data Search_SearchInformation = Search_SearchInformation
+  { -- | The time taken for the server to return search results, formatted according to locale style.
+    formattedSearchTime :: (Core.Maybe Core.Text),
+    -- | The total number of search results, formatted according to locale style.
+    formattedTotalResults :: (Core.Maybe Core.Text),
+    -- | The time taken for the server to return search results.
+    searchTime :: (Core.Maybe Core.Double),
+    -- | The total number of search results returned by the query.
+    totalResults :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Search_SearchInformation' with the minimum fields required to make a request.
+newSearch_SearchInformation ::
+  Search_SearchInformation
+newSearch_SearchInformation =
+  Search_SearchInformation
+    { formattedSearchTime = Core.Nothing,
+      formattedTotalResults = Core.Nothing,
+      searchTime = Core.Nothing,
+      totalResults = Core.Nothing
+    }
+
+instance Core.FromJSON Search_SearchInformation where
+  parseJSON =
+    Core.withObject
+      "Search_SearchInformation"
+      ( \o ->
+          Search_SearchInformation
+            Core.<$> (o Core..:? "formattedSearchTime")
+            Core.<*> (o Core..:? "formattedTotalResults")
+            Core.<*> (o Core..:? "searchTime")
+            Core.<*> (o Core..:? "totalResults")
+      )
+
+instance Core.ToJSON Search_SearchInformation where
+  toJSON Search_SearchInformation {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("formattedSearchTime" Core..=) Core.<$> formattedSearchTime,
+            ("formattedTotalResults" Core..=) Core.<$> formattedTotalResults,
+            ("searchTime" Core..=) Core.<$> searchTime,
+            ("totalResults" Core..=) Core.<$> totalResults
+          ]
+      )
+
+-- | Spell correction information for a query.
+--
+-- /See:/ 'newSearch_Spelling' smart constructor.
+data Search_Spelling = Search_Spelling
+  { -- | The corrected query.
+    correctedQuery :: (Core.Maybe Core.Text),
+    -- | The corrected query, formatted in HTML.
+    htmlCorrectedQuery :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Search_Spelling' with the minimum fields required to make a request.
+newSearch_Spelling ::
+  Search_Spelling
+newSearch_Spelling =
+  Search_Spelling
+    { correctedQuery = Core.Nothing,
+      htmlCorrectedQuery = Core.Nothing
+    }
+
+instance Core.FromJSON Search_Spelling where
+  parseJSON =
+    Core.withObject
+      "Search_Spelling"
+      ( \o ->
+          Search_Spelling
+            Core.<$> (o Core..:? "correctedQuery")
+            Core.<*> (o Core..:? "htmlCorrectedQuery")
+      )
+
+instance Core.ToJSON Search_Spelling where
+  toJSON Search_Spelling {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("correctedQuery" Core..=) Core.<$> correctedQuery,
+            ("htmlCorrectedQuery" Core..=) Core.<$> htmlCorrectedQuery
+          ]
+      )
+
+-- | OpenSearch template and URL.
+--
+-- /See:/ 'newSearch_Url' smart constructor.
+data Search_Url = Search_Url
+  { -- | The actual <http://www.opensearch.org/specifications/opensearch/1.1#opensearch_url_template_syntax OpenSearch template> for this API.
+    template :: (Core.Maybe Core.Text),
+    -- | The MIME type of the OpenSearch URL template for the Custom Search JSON API.
+    type' :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Search_Url' with the minimum fields required to make a request.
+newSearch_Url ::
+  Search_Url
+newSearch_Url =
+  Search_Url {template = Core.Nothing, type' = Core.Nothing}
+
+instance Core.FromJSON Search_Url where
+  parseJSON =
+    Core.withObject
+      "Search_Url"
+      ( \o ->
+          Search_Url
+            Core.<$> (o Core..:? "template")
+            Core.<*> (o Core..:? "type")
+      )
+
+instance Core.ToJSON Search_Url where
+  toJSON Search_Url {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("template" Core..=) Core.<$> template,
+            ("type" Core..=) Core.<$> type'
+          ]
+      )
diff --git a/gen/Gogol/CustomSearch/Internal/Sum.hs b/gen/Gogol/CustomSearch/Internal/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CustomSearch/Internal/Sum.hs
@@ -0,0 +1,887 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CustomSearch.Internal.Sum
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.CustomSearch.Internal.Sum
+  ( -- * Xgafv
+    Xgafv
+      ( Xgafv_1,
+        Xgafv_2,
+        ..
+      ),
+
+    -- * CseListImgColorType
+    CseListImgColorType
+      ( CseListImgColorType_ImgColorTypeUndefined,
+        CseListImgColorType_Mono,
+        CseListImgColorType_Gray,
+        CseListImgColorType_Color,
+        CseListImgColorType_Trans,
+        ..
+      ),
+
+    -- * CseListImgDominantColor
+    CseListImgDominantColor
+      ( CseListImgDominantColor_ImgDominantColorUndefined,
+        CseListImgDominantColor_Black,
+        CseListImgDominantColor_Blue,
+        CseListImgDominantColor_Brown,
+        CseListImgDominantColor_Gray,
+        CseListImgDominantColor_Green,
+        CseListImgDominantColor_Orange,
+        CseListImgDominantColor_Pink,
+        CseListImgDominantColor_Purple,
+        CseListImgDominantColor_Red,
+        CseListImgDominantColor_Teal,
+        CseListImgDominantColor_White,
+        CseListImgDominantColor_Yellow,
+        ..
+      ),
+
+    -- * CseListImgSize
+    CseListImgSize
+      ( CseListImgSize_ImgSizeUndefined,
+        CseListImgSize_Huge,
+        CseListImgSize_Icon,
+        CseListImgSize_Large,
+        CseListImgSize_Medium,
+        CseListImgSize_Small,
+        CseListImgSize_Xlarge,
+        CseListImgSize_Xxlarge,
+        ..
+      ),
+
+    -- * CseListImgType
+    CseListImgType
+      ( CseListImgType_ImgTypeUndefined,
+        CseListImgType_Clipart,
+        CseListImgType_Face,
+        CseListImgType_Lineart,
+        CseListImgType_Stock,
+        CseListImgType_Photo,
+        CseListImgType_Animated,
+        ..
+      ),
+
+    -- * CseListSafe
+    CseListSafe
+      ( CseListSafe_SafeUndefined,
+        CseListSafe_Active,
+        CseListSafe_High,
+        CseListSafe_Medium,
+        CseListSafe_Off,
+        ..
+      ),
+
+    -- * CseListSearchType
+    CseListSearchType
+      ( CseListSearchType_SearchTypeUndefined,
+        CseListSearchType_Image,
+        ..
+      ),
+
+    -- * CseListSiteSearchFilter
+    CseListSiteSearchFilter
+      ( CseListSiteSearchFilter_SiteSearchFilterUndefined,
+        CseListSiteSearchFilter_E,
+        CseListSiteSearchFilter_I,
+        ..
+      ),
+
+    -- * CseSiterestrictListImgColorType
+    CseSiterestrictListImgColorType
+      ( CseSiterestrictListImgColorType_ImgColorTypeUndefined,
+        CseSiterestrictListImgColorType_Mono,
+        CseSiterestrictListImgColorType_Gray,
+        CseSiterestrictListImgColorType_Color,
+        CseSiterestrictListImgColorType_Trans,
+        ..
+      ),
+
+    -- * CseSiterestrictListImgDominantColor
+    CseSiterestrictListImgDominantColor
+      ( CseSiterestrictListImgDominantColor_ImgDominantColorUndefined,
+        CseSiterestrictListImgDominantColor_Black,
+        CseSiterestrictListImgDominantColor_Blue,
+        CseSiterestrictListImgDominantColor_Brown,
+        CseSiterestrictListImgDominantColor_Gray,
+        CseSiterestrictListImgDominantColor_Green,
+        CseSiterestrictListImgDominantColor_Orange,
+        CseSiterestrictListImgDominantColor_Pink,
+        CseSiterestrictListImgDominantColor_Purple,
+        CseSiterestrictListImgDominantColor_Red,
+        CseSiterestrictListImgDominantColor_Teal,
+        CseSiterestrictListImgDominantColor_White,
+        CseSiterestrictListImgDominantColor_Yellow,
+        ..
+      ),
+
+    -- * CseSiterestrictListImgSize
+    CseSiterestrictListImgSize
+      ( CseSiterestrictListImgSize_ImgSizeUndefined,
+        CseSiterestrictListImgSize_Huge,
+        CseSiterestrictListImgSize_Icon,
+        CseSiterestrictListImgSize_Large,
+        CseSiterestrictListImgSize_Medium,
+        CseSiterestrictListImgSize_Small,
+        CseSiterestrictListImgSize_Xlarge,
+        CseSiterestrictListImgSize_Xxlarge,
+        ..
+      ),
+
+    -- * CseSiterestrictListImgType
+    CseSiterestrictListImgType
+      ( CseSiterestrictListImgType_ImgTypeUndefined,
+        CseSiterestrictListImgType_Clipart,
+        CseSiterestrictListImgType_Face,
+        CseSiterestrictListImgType_Lineart,
+        CseSiterestrictListImgType_Stock,
+        CseSiterestrictListImgType_Photo,
+        CseSiterestrictListImgType_Animated,
+        ..
+      ),
+
+    -- * CseSiterestrictListSafe
+    CseSiterestrictListSafe
+      ( CseSiterestrictListSafe_SafeUndefined,
+        CseSiterestrictListSafe_Active,
+        CseSiterestrictListSafe_High,
+        CseSiterestrictListSafe_Medium,
+        CseSiterestrictListSafe_Off,
+        ..
+      ),
+
+    -- * CseSiterestrictListSearchType
+    CseSiterestrictListSearchType
+      ( CseSiterestrictListSearchType_SearchTypeUndefined,
+        CseSiterestrictListSearchType_Image,
+        ..
+      ),
+
+    -- * CseSiterestrictListSiteSearchFilter
+    CseSiterestrictListSiteSearchFilter
+      ( CseSiterestrictListSiteSearchFilter_SiteSearchFilterUndefined,
+        CseSiterestrictListSiteSearchFilter_E,
+        CseSiterestrictListSiteSearchFilter_I,
+        ..
+      ),
+  )
+where
+
+import Gogol.Prelude qualified as Core
+
+-- | V1 error format.
+newtype Xgafv = Xgafv {fromXgafv :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | v1 error format
+pattern Xgafv_1 :: Xgafv
+pattern Xgafv_1 = Xgafv "1"
+
+-- | v2 error format
+pattern Xgafv_2 :: Xgafv
+pattern Xgafv_2 = Xgafv "2"
+
+{-# COMPLETE
+  Xgafv_1,
+  Xgafv_2,
+  Xgafv
+  #-}
+
+-- | Returns black and white, grayscale, transparent, or color images. Acceptable values are: * @\"color\"@ * @\"gray\"@ * @\"mono\"@: black and white * @\"trans\"@: transparent background
+newtype CseListImgColorType = CseListImgColorType {fromCseListImgColorType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | No image color type specified.
+pattern CseListImgColorType_ImgColorTypeUndefined :: CseListImgColorType
+pattern CseListImgColorType_ImgColorTypeUndefined = CseListImgColorType "imgColorTypeUndefined"
+
+-- | Black and white images only.
+pattern CseListImgColorType_Mono :: CseListImgColorType
+pattern CseListImgColorType_Mono = CseListImgColorType "mono"
+
+-- | Grayscale images only.
+pattern CseListImgColorType_Gray :: CseListImgColorType
+pattern CseListImgColorType_Gray = CseListImgColorType "gray"
+
+-- | Color images only.
+pattern CseListImgColorType_Color :: CseListImgColorType
+pattern CseListImgColorType_Color = CseListImgColorType "color"
+
+-- | Images with transparent background
+pattern CseListImgColorType_Trans :: CseListImgColorType
+pattern CseListImgColorType_Trans = CseListImgColorType "trans"
+
+{-# COMPLETE
+  CseListImgColorType_ImgColorTypeUndefined,
+  CseListImgColorType_Mono,
+  CseListImgColorType_Gray,
+  CseListImgColorType_Color,
+  CseListImgColorType_Trans,
+  CseListImgColorType
+  #-}
+
+-- | Returns images of a specific dominant color. Acceptable values are: * @\"black\"@ * @\"blue\"@ * @\"brown\"@ * @\"gray\"@ * @\"green\"@ * @\"orange\"@ * @\"pink\"@ * @\"purple\"@ * @\"red\"@ * @\"teal\"@ * @\"white\"@ * @\"yellow\"@
+newtype CseListImgDominantColor = CseListImgDominantColor {fromCseListImgDominantColor :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | No dominant color specified.
+pattern CseListImgDominantColor_ImgDominantColorUndefined :: CseListImgDominantColor
+pattern CseListImgDominantColor_ImgDominantColorUndefined = CseListImgDominantColor "imgDominantColorUndefined"
+
+-- | Predominantly black images only.
+pattern CseListImgDominantColor_Black :: CseListImgDominantColor
+pattern CseListImgDominantColor_Black = CseListImgDominantColor "black"
+
+-- | Predominantly blue images only.
+pattern CseListImgDominantColor_Blue :: CseListImgDominantColor
+pattern CseListImgDominantColor_Blue = CseListImgDominantColor "blue"
+
+-- | Predominantly brown images only.
+pattern CseListImgDominantColor_Brown :: CseListImgDominantColor
+pattern CseListImgDominantColor_Brown = CseListImgDominantColor "brown"
+
+-- | Predominantly gray images only.
+pattern CseListImgDominantColor_Gray :: CseListImgDominantColor
+pattern CseListImgDominantColor_Gray = CseListImgDominantColor "gray"
+
+-- | Predominantly green images only.
+pattern CseListImgDominantColor_Green :: CseListImgDominantColor
+pattern CseListImgDominantColor_Green = CseListImgDominantColor "green"
+
+-- | Predominantly orange images only.
+pattern CseListImgDominantColor_Orange :: CseListImgDominantColor
+pattern CseListImgDominantColor_Orange = CseListImgDominantColor "orange"
+
+-- | Predominantly pink images only.
+pattern CseListImgDominantColor_Pink :: CseListImgDominantColor
+pattern CseListImgDominantColor_Pink = CseListImgDominantColor "pink"
+
+-- | Predominantly purple images only.
+pattern CseListImgDominantColor_Purple :: CseListImgDominantColor
+pattern CseListImgDominantColor_Purple = CseListImgDominantColor "purple"
+
+-- | Predominantly red images only.
+pattern CseListImgDominantColor_Red :: CseListImgDominantColor
+pattern CseListImgDominantColor_Red = CseListImgDominantColor "red"
+
+-- | Predominantly teal images only.
+pattern CseListImgDominantColor_Teal :: CseListImgDominantColor
+pattern CseListImgDominantColor_Teal = CseListImgDominantColor "teal"
+
+-- | Predominantly white images only.
+pattern CseListImgDominantColor_White :: CseListImgDominantColor
+pattern CseListImgDominantColor_White = CseListImgDominantColor "white"
+
+-- | Predominantly yellow images only.
+pattern CseListImgDominantColor_Yellow :: CseListImgDominantColor
+pattern CseListImgDominantColor_Yellow = CseListImgDominantColor "yellow"
+
+{-# COMPLETE
+  CseListImgDominantColor_ImgDominantColorUndefined,
+  CseListImgDominantColor_Black,
+  CseListImgDominantColor_Blue,
+  CseListImgDominantColor_Brown,
+  CseListImgDominantColor_Gray,
+  CseListImgDominantColor_Green,
+  CseListImgDominantColor_Orange,
+  CseListImgDominantColor_Pink,
+  CseListImgDominantColor_Purple,
+  CseListImgDominantColor_Red,
+  CseListImgDominantColor_Teal,
+  CseListImgDominantColor_White,
+  CseListImgDominantColor_Yellow,
+  CseListImgDominantColor
+  #-}
+
+-- | Returns images of a specified size. Acceptable values are: * @\"huge\"@ * @\"icon\"@ * @\"large\"@ * @\"medium\"@ * @\"small\"@ * @\"xlarge\"@ * @\"xxlarge\"@
+newtype CseListImgSize = CseListImgSize {fromCseListImgSize :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | No image size specified.
+pattern CseListImgSize_ImgSizeUndefined :: CseListImgSize
+pattern CseListImgSize_ImgSizeUndefined = CseListImgSize "imgSizeUndefined"
+
+-- | Only the largest possible images.
+pattern CseListImgSize_Huge :: CseListImgSize
+pattern CseListImgSize_Huge = CseListImgSize "HUGE"
+
+-- | Only very small icon-sized images.
+pattern CseListImgSize_Icon :: CseListImgSize
+pattern CseListImgSize_Icon = CseListImgSize "ICON"
+
+-- | Only large images.
+pattern CseListImgSize_Large :: CseListImgSize
+pattern CseListImgSize_Large = CseListImgSize "LARGE"
+
+-- | Only medium images.
+pattern CseListImgSize_Medium :: CseListImgSize
+pattern CseListImgSize_Medium = CseListImgSize "MEDIUM"
+
+-- | Only small images.
+pattern CseListImgSize_Small :: CseListImgSize
+pattern CseListImgSize_Small = CseListImgSize "SMALL"
+
+-- | Only very large images.
+pattern CseListImgSize_Xlarge :: CseListImgSize
+pattern CseListImgSize_Xlarge = CseListImgSize "XLARGE"
+
+-- | Only extremely large images.
+pattern CseListImgSize_Xxlarge :: CseListImgSize
+pattern CseListImgSize_Xxlarge = CseListImgSize "XXLARGE"
+
+{-# COMPLETE
+  CseListImgSize_ImgSizeUndefined,
+  CseListImgSize_Huge,
+  CseListImgSize_Icon,
+  CseListImgSize_Large,
+  CseListImgSize_Medium,
+  CseListImgSize_Small,
+  CseListImgSize_Xlarge,
+  CseListImgSize_Xxlarge,
+  CseListImgSize
+  #-}
+
+-- | Returns images of a type. Acceptable values are: * @\"clipart\"@ * @\"face\"@ * @\"lineart\"@ * @\"stock\"@ * @\"photo\"@ * @\"animated\"@
+newtype CseListImgType = CseListImgType {fromCseListImgType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | No image type specified.
+pattern CseListImgType_ImgTypeUndefined :: CseListImgType
+pattern CseListImgType_ImgTypeUndefined = CseListImgType "imgTypeUndefined"
+
+-- | Clipart-style images only.
+pattern CseListImgType_Clipart :: CseListImgType
+pattern CseListImgType_Clipart = CseListImgType "clipart"
+
+-- | Images of faces only.
+pattern CseListImgType_Face :: CseListImgType
+pattern CseListImgType_Face = CseListImgType "face"
+
+-- | Line art images only.
+pattern CseListImgType_Lineart :: CseListImgType
+pattern CseListImgType_Lineart = CseListImgType "lineart"
+
+-- | Stock images only.
+pattern CseListImgType_Stock :: CseListImgType
+pattern CseListImgType_Stock = CseListImgType "stock"
+
+-- | Photo images only.
+pattern CseListImgType_Photo :: CseListImgType
+pattern CseListImgType_Photo = CseListImgType "photo"
+
+-- | Animated images only.
+pattern CseListImgType_Animated :: CseListImgType
+pattern CseListImgType_Animated = CseListImgType "animated"
+
+{-# COMPLETE
+  CseListImgType_ImgTypeUndefined,
+  CseListImgType_Clipart,
+  CseListImgType_Face,
+  CseListImgType_Lineart,
+  CseListImgType_Stock,
+  CseListImgType_Photo,
+  CseListImgType_Animated,
+  CseListImgType
+  #-}
+
+-- | Search safety level. Acceptable values are: * @\"active\"@: Enables SafeSearch filtering. * @\"off\"@: Disables SafeSearch filtering. (default)
+newtype CseListSafe = CseListSafe {fromCseListSafe :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | SafeSearch mode unspecified. (Falls back to engine\'s configuration.)
+pattern CseListSafe_SafeUndefined :: CseListSafe
+pattern CseListSafe_SafeUndefined = CseListSafe "safeUndefined"
+
+-- | Turn SafeSearch on.
+pattern CseListSafe_Active :: CseListSafe
+pattern CseListSafe_Active = CseListSafe "active"
+
+-- | Deprecated, equivalent to \"active\".
+pattern CseListSafe_High :: CseListSafe
+pattern CseListSafe_High = CseListSafe "high"
+
+-- | Deprecated, equivalent to \"active\".
+pattern CseListSafe_Medium :: CseListSafe
+pattern CseListSafe_Medium = CseListSafe "medium"
+
+-- | Turn SafeSearch off.
+pattern CseListSafe_Off :: CseListSafe
+pattern CseListSafe_Off = CseListSafe "off"
+
+{-# COMPLETE
+  CseListSafe_SafeUndefined,
+  CseListSafe_Active,
+  CseListSafe_High,
+  CseListSafe_Medium,
+  CseListSafe_Off,
+  CseListSafe
+  #-}
+
+-- | Specifies the search type: @image@. If unspecified, results are limited to webpages. Acceptable values are: * @\"image\"@: custom image search.
+newtype CseListSearchType = CseListSearchType {fromCseListSearchType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Search type unspecified (defaults to web search).
+pattern CseListSearchType_SearchTypeUndefined :: CseListSearchType
+pattern CseListSearchType_SearchTypeUndefined = CseListSearchType "searchTypeUndefined"
+
+-- | Image search.
+pattern CseListSearchType_Image :: CseListSearchType
+pattern CseListSearchType_Image = CseListSearchType "image"
+
+{-# COMPLETE
+  CseListSearchType_SearchTypeUndefined,
+  CseListSearchType_Image,
+  CseListSearchType
+  #-}
+
+-- | Controls whether to include or exclude results from the site named in the @siteSearch@ parameter. Acceptable values are: * @\"e\"@: exclude * @\"i\"@: include
+newtype CseListSiteSearchFilter = CseListSiteSearchFilter {fromCseListSiteSearchFilter :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Filter mode unspecified.
+pattern CseListSiteSearchFilter_SiteSearchFilterUndefined :: CseListSiteSearchFilter
+pattern CseListSiteSearchFilter_SiteSearchFilterUndefined = CseListSiteSearchFilter "siteSearchFilterUndefined"
+
+-- | Exclude results from the listed sites.
+pattern CseListSiteSearchFilter_E :: CseListSiteSearchFilter
+pattern CseListSiteSearchFilter_E = CseListSiteSearchFilter "e"
+
+-- | Include only results from the listed sites.
+pattern CseListSiteSearchFilter_I :: CseListSiteSearchFilter
+pattern CseListSiteSearchFilter_I = CseListSiteSearchFilter "i"
+
+{-# COMPLETE
+  CseListSiteSearchFilter_SiteSearchFilterUndefined,
+  CseListSiteSearchFilter_E,
+  CseListSiteSearchFilter_I,
+  CseListSiteSearchFilter
+  #-}
+
+-- | Returns black and white, grayscale, transparent, or color images. Acceptable values are: * @\"color\"@ * @\"gray\"@ * @\"mono\"@: black and white * @\"trans\"@: transparent background
+newtype CseSiterestrictListImgColorType = CseSiterestrictListImgColorType {fromCseSiterestrictListImgColorType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | No image color type specified.
+pattern CseSiterestrictListImgColorType_ImgColorTypeUndefined :: CseSiterestrictListImgColorType
+pattern CseSiterestrictListImgColorType_ImgColorTypeUndefined = CseSiterestrictListImgColorType "imgColorTypeUndefined"
+
+-- | Black and white images only.
+pattern CseSiterestrictListImgColorType_Mono :: CseSiterestrictListImgColorType
+pattern CseSiterestrictListImgColorType_Mono = CseSiterestrictListImgColorType "mono"
+
+-- | Grayscale images only.
+pattern CseSiterestrictListImgColorType_Gray :: CseSiterestrictListImgColorType
+pattern CseSiterestrictListImgColorType_Gray = CseSiterestrictListImgColorType "gray"
+
+-- | Color images only.
+pattern CseSiterestrictListImgColorType_Color :: CseSiterestrictListImgColorType
+pattern CseSiterestrictListImgColorType_Color = CseSiterestrictListImgColorType "color"
+
+-- | Images with transparent background
+pattern CseSiterestrictListImgColorType_Trans :: CseSiterestrictListImgColorType
+pattern CseSiterestrictListImgColorType_Trans = CseSiterestrictListImgColorType "trans"
+
+{-# COMPLETE
+  CseSiterestrictListImgColorType_ImgColorTypeUndefined,
+  CseSiterestrictListImgColorType_Mono,
+  CseSiterestrictListImgColorType_Gray,
+  CseSiterestrictListImgColorType_Color,
+  CseSiterestrictListImgColorType_Trans,
+  CseSiterestrictListImgColorType
+  #-}
+
+-- | Returns images of a specific dominant color. Acceptable values are: * @\"black\"@ * @\"blue\"@ * @\"brown\"@ * @\"gray\"@ * @\"green\"@ * @\"orange\"@ * @\"pink\"@ * @\"purple\"@ * @\"red\"@ * @\"teal\"@ * @\"white\"@ * @\"yellow\"@
+newtype CseSiterestrictListImgDominantColor = CseSiterestrictListImgDominantColor {fromCseSiterestrictListImgDominantColor :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | No dominant color specified.
+pattern CseSiterestrictListImgDominantColor_ImgDominantColorUndefined :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_ImgDominantColorUndefined = CseSiterestrictListImgDominantColor "imgDominantColorUndefined"
+
+-- | Predominantly black images only.
+pattern CseSiterestrictListImgDominantColor_Black :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Black = CseSiterestrictListImgDominantColor "black"
+
+-- | Predominantly blue images only.
+pattern CseSiterestrictListImgDominantColor_Blue :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Blue = CseSiterestrictListImgDominantColor "blue"
+
+-- | Predominantly brown images only.
+pattern CseSiterestrictListImgDominantColor_Brown :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Brown = CseSiterestrictListImgDominantColor "brown"
+
+-- | Predominantly gray images only.
+pattern CseSiterestrictListImgDominantColor_Gray :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Gray = CseSiterestrictListImgDominantColor "gray"
+
+-- | Predominantly green images only.
+pattern CseSiterestrictListImgDominantColor_Green :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Green = CseSiterestrictListImgDominantColor "green"
+
+-- | Predominantly orange images only.
+pattern CseSiterestrictListImgDominantColor_Orange :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Orange = CseSiterestrictListImgDominantColor "orange"
+
+-- | Predominantly pink images only.
+pattern CseSiterestrictListImgDominantColor_Pink :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Pink = CseSiterestrictListImgDominantColor "pink"
+
+-- | Predominantly purple images only.
+pattern CseSiterestrictListImgDominantColor_Purple :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Purple = CseSiterestrictListImgDominantColor "purple"
+
+-- | Predominantly red images only.
+pattern CseSiterestrictListImgDominantColor_Red :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Red = CseSiterestrictListImgDominantColor "red"
+
+-- | Predominantly teal images only.
+pattern CseSiterestrictListImgDominantColor_Teal :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Teal = CseSiterestrictListImgDominantColor "teal"
+
+-- | Predominantly white images only.
+pattern CseSiterestrictListImgDominantColor_White :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_White = CseSiterestrictListImgDominantColor "white"
+
+-- | Predominantly yellow images only.
+pattern CseSiterestrictListImgDominantColor_Yellow :: CseSiterestrictListImgDominantColor
+pattern CseSiterestrictListImgDominantColor_Yellow = CseSiterestrictListImgDominantColor "yellow"
+
+{-# COMPLETE
+  CseSiterestrictListImgDominantColor_ImgDominantColorUndefined,
+  CseSiterestrictListImgDominantColor_Black,
+  CseSiterestrictListImgDominantColor_Blue,
+  CseSiterestrictListImgDominantColor_Brown,
+  CseSiterestrictListImgDominantColor_Gray,
+  CseSiterestrictListImgDominantColor_Green,
+  CseSiterestrictListImgDominantColor_Orange,
+  CseSiterestrictListImgDominantColor_Pink,
+  CseSiterestrictListImgDominantColor_Purple,
+  CseSiterestrictListImgDominantColor_Red,
+  CseSiterestrictListImgDominantColor_Teal,
+  CseSiterestrictListImgDominantColor_White,
+  CseSiterestrictListImgDominantColor_Yellow,
+  CseSiterestrictListImgDominantColor
+  #-}
+
+-- | Returns images of a specified size. Acceptable values are: * @\"huge\"@ * @\"icon\"@ * @\"large\"@ * @\"medium\"@ * @\"small\"@ * @\"xlarge\"@ * @\"xxlarge\"@
+newtype CseSiterestrictListImgSize = CseSiterestrictListImgSize {fromCseSiterestrictListImgSize :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | No image size specified.
+pattern CseSiterestrictListImgSize_ImgSizeUndefined :: CseSiterestrictListImgSize
+pattern CseSiterestrictListImgSize_ImgSizeUndefined = CseSiterestrictListImgSize "imgSizeUndefined"
+
+-- | Only the largest possible images.
+pattern CseSiterestrictListImgSize_Huge :: CseSiterestrictListImgSize
+pattern CseSiterestrictListImgSize_Huge = CseSiterestrictListImgSize "HUGE"
+
+-- | Only very small icon-sized images.
+pattern CseSiterestrictListImgSize_Icon :: CseSiterestrictListImgSize
+pattern CseSiterestrictListImgSize_Icon = CseSiterestrictListImgSize "ICON"
+
+-- | Only large images.
+pattern CseSiterestrictListImgSize_Large :: CseSiterestrictListImgSize
+pattern CseSiterestrictListImgSize_Large = CseSiterestrictListImgSize "LARGE"
+
+-- | Only medium images.
+pattern CseSiterestrictListImgSize_Medium :: CseSiterestrictListImgSize
+pattern CseSiterestrictListImgSize_Medium = CseSiterestrictListImgSize "MEDIUM"
+
+-- | Only small images.
+pattern CseSiterestrictListImgSize_Small :: CseSiterestrictListImgSize
+pattern CseSiterestrictListImgSize_Small = CseSiterestrictListImgSize "SMALL"
+
+-- | Only very large images.
+pattern CseSiterestrictListImgSize_Xlarge :: CseSiterestrictListImgSize
+pattern CseSiterestrictListImgSize_Xlarge = CseSiterestrictListImgSize "XLARGE"
+
+-- | Only extremely large images.
+pattern CseSiterestrictListImgSize_Xxlarge :: CseSiterestrictListImgSize
+pattern CseSiterestrictListImgSize_Xxlarge = CseSiterestrictListImgSize "XXLARGE"
+
+{-# COMPLETE
+  CseSiterestrictListImgSize_ImgSizeUndefined,
+  CseSiterestrictListImgSize_Huge,
+  CseSiterestrictListImgSize_Icon,
+  CseSiterestrictListImgSize_Large,
+  CseSiterestrictListImgSize_Medium,
+  CseSiterestrictListImgSize_Small,
+  CseSiterestrictListImgSize_Xlarge,
+  CseSiterestrictListImgSize_Xxlarge,
+  CseSiterestrictListImgSize
+  #-}
+
+-- | Returns images of a type. Acceptable values are: * @\"clipart\"@ * @\"face\"@ * @\"lineart\"@ * @\"stock\"@ * @\"photo\"@ * @\"animated\"@
+newtype CseSiterestrictListImgType = CseSiterestrictListImgType {fromCseSiterestrictListImgType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | No image type specified.
+pattern CseSiterestrictListImgType_ImgTypeUndefined :: CseSiterestrictListImgType
+pattern CseSiterestrictListImgType_ImgTypeUndefined = CseSiterestrictListImgType "imgTypeUndefined"
+
+-- | Clipart-style images only.
+pattern CseSiterestrictListImgType_Clipart :: CseSiterestrictListImgType
+pattern CseSiterestrictListImgType_Clipart = CseSiterestrictListImgType "clipart"
+
+-- | Images of faces only.
+pattern CseSiterestrictListImgType_Face :: CseSiterestrictListImgType
+pattern CseSiterestrictListImgType_Face = CseSiterestrictListImgType "face"
+
+-- | Line art images only.
+pattern CseSiterestrictListImgType_Lineart :: CseSiterestrictListImgType
+pattern CseSiterestrictListImgType_Lineart = CseSiterestrictListImgType "lineart"
+
+-- | Stock images only.
+pattern CseSiterestrictListImgType_Stock :: CseSiterestrictListImgType
+pattern CseSiterestrictListImgType_Stock = CseSiterestrictListImgType "stock"
+
+-- | Photo images only.
+pattern CseSiterestrictListImgType_Photo :: CseSiterestrictListImgType
+pattern CseSiterestrictListImgType_Photo = CseSiterestrictListImgType "photo"
+
+-- | Animated images only.
+pattern CseSiterestrictListImgType_Animated :: CseSiterestrictListImgType
+pattern CseSiterestrictListImgType_Animated = CseSiterestrictListImgType "animated"
+
+{-# COMPLETE
+  CseSiterestrictListImgType_ImgTypeUndefined,
+  CseSiterestrictListImgType_Clipart,
+  CseSiterestrictListImgType_Face,
+  CseSiterestrictListImgType_Lineart,
+  CseSiterestrictListImgType_Stock,
+  CseSiterestrictListImgType_Photo,
+  CseSiterestrictListImgType_Animated,
+  CseSiterestrictListImgType
+  #-}
+
+-- | Search safety level. Acceptable values are: * @\"active\"@: Enables SafeSearch filtering. * @\"off\"@: Disables SafeSearch filtering. (default)
+newtype CseSiterestrictListSafe = CseSiterestrictListSafe {fromCseSiterestrictListSafe :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | SafeSearch mode unspecified. (Falls back to engine\'s configuration.)
+pattern CseSiterestrictListSafe_SafeUndefined :: CseSiterestrictListSafe
+pattern CseSiterestrictListSafe_SafeUndefined = CseSiterestrictListSafe "safeUndefined"
+
+-- | Turn SafeSearch on.
+pattern CseSiterestrictListSafe_Active :: CseSiterestrictListSafe
+pattern CseSiterestrictListSafe_Active = CseSiterestrictListSafe "active"
+
+-- | Deprecated, equivalent to \"active\".
+pattern CseSiterestrictListSafe_High :: CseSiterestrictListSafe
+pattern CseSiterestrictListSafe_High = CseSiterestrictListSafe "high"
+
+-- | Deprecated, equivalent to \"active\".
+pattern CseSiterestrictListSafe_Medium :: CseSiterestrictListSafe
+pattern CseSiterestrictListSafe_Medium = CseSiterestrictListSafe "medium"
+
+-- | Turn SafeSearch off.
+pattern CseSiterestrictListSafe_Off :: CseSiterestrictListSafe
+pattern CseSiterestrictListSafe_Off = CseSiterestrictListSafe "off"
+
+{-# COMPLETE
+  CseSiterestrictListSafe_SafeUndefined,
+  CseSiterestrictListSafe_Active,
+  CseSiterestrictListSafe_High,
+  CseSiterestrictListSafe_Medium,
+  CseSiterestrictListSafe_Off,
+  CseSiterestrictListSafe
+  #-}
+
+-- | Specifies the search type: @image@. If unspecified, results are limited to webpages. Acceptable values are: * @\"image\"@: custom image search.
+newtype CseSiterestrictListSearchType = CseSiterestrictListSearchType {fromCseSiterestrictListSearchType :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Search type unspecified (defaults to web search).
+pattern CseSiterestrictListSearchType_SearchTypeUndefined :: CseSiterestrictListSearchType
+pattern CseSiterestrictListSearchType_SearchTypeUndefined = CseSiterestrictListSearchType "searchTypeUndefined"
+
+-- | Image search.
+pattern CseSiterestrictListSearchType_Image :: CseSiterestrictListSearchType
+pattern CseSiterestrictListSearchType_Image = CseSiterestrictListSearchType "image"
+
+{-# COMPLETE
+  CseSiterestrictListSearchType_SearchTypeUndefined,
+  CseSiterestrictListSearchType_Image,
+  CseSiterestrictListSearchType
+  #-}
+
+-- | Controls whether to include or exclude results from the site named in the @siteSearch@ parameter. Acceptable values are: * @\"e\"@: exclude * @\"i\"@: include
+newtype CseSiterestrictListSiteSearchFilter = CseSiterestrictListSiteSearchFilter {fromCseSiterestrictListSiteSearchFilter :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Filter mode unspecified.
+pattern CseSiterestrictListSiteSearchFilter_SiteSearchFilterUndefined :: CseSiterestrictListSiteSearchFilter
+pattern CseSiterestrictListSiteSearchFilter_SiteSearchFilterUndefined = CseSiterestrictListSiteSearchFilter "siteSearchFilterUndefined"
+
+-- | Exclude results from the listed sites.
+pattern CseSiterestrictListSiteSearchFilter_E :: CseSiterestrictListSiteSearchFilter
+pattern CseSiterestrictListSiteSearchFilter_E = CseSiterestrictListSiteSearchFilter "e"
+
+-- | Include only results from the listed sites.
+pattern CseSiterestrictListSiteSearchFilter_I :: CseSiterestrictListSiteSearchFilter
+pattern CseSiterestrictListSiteSearchFilter_I = CseSiterestrictListSiteSearchFilter "i"
+
+{-# COMPLETE
+  CseSiterestrictListSiteSearchFilter_SiteSearchFilterUndefined,
+  CseSiterestrictListSiteSearchFilter_E,
+  CseSiterestrictListSiteSearchFilter_I,
+  CseSiterestrictListSiteSearchFilter
+  #-}
diff --git a/gen/Gogol/CustomSearch/Search/Cse/List.hs b/gen/Gogol/CustomSearch/Search/Cse/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CustomSearch/Search/Cse/List.hs
@@ -0,0 +1,293 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CustomSearch.Search.Cse.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns metadata about the search performed, metadata about the engine used for the search, and the search results.
+--
+-- /See:/ <https://developers.google.com/custom-search/v1/introduction Custom Search API Reference> for @search.cse.list@.
+module Gogol.CustomSearch.Search.Cse.List
+  ( -- * Resource
+    SearchCseListResource,
+
+    -- ** Constructing a Request
+    SearchCseList (..),
+    newSearchCseList,
+  )
+where
+
+import Gogol.CustomSearch.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @search.cse.list@ method which the
+-- 'SearchCseList' request conforms to.
+type SearchCseListResource =
+  "customsearch"
+    Core.:> "v1"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "c2coff" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "cr" Core.Text
+    Core.:> Core.QueryParam "cx" Core.Text
+    Core.:> Core.QueryParam "dateRestrict" Core.Text
+    Core.:> Core.QueryParam "enableAlternateSearchHandler" Core.Bool
+    Core.:> Core.QueryParam "exactTerms" Core.Text
+    Core.:> Core.QueryParam "excludeTerms" Core.Text
+    Core.:> Core.QueryParam "fileType" Core.Text
+    Core.:> Core.QueryParam "filter" Core.Text
+    Core.:> Core.QueryParam "gl" Core.Text
+    Core.:> Core.QueryParam "googlehost" Core.Text
+    Core.:> Core.QueryParam "highRange" Core.Text
+    Core.:> Core.QueryParam "hl" Core.Text
+    Core.:> Core.QueryParam "hq" Core.Text
+    Core.:> Core.QueryParam "imgColorType" CseListImgColorType
+    Core.:> Core.QueryParam
+              "imgDominantColor"
+              CseListImgDominantColor
+    Core.:> Core.QueryParam "imgSize" CseListImgSize
+    Core.:> Core.QueryParam "imgType" CseListImgType
+    Core.:> Core.QueryParam "linkSite" Core.Text
+    Core.:> Core.QueryParam "lowRange" Core.Text
+    Core.:> Core.QueryParam "lr" Core.Text
+    Core.:> Core.QueryParam "num" Core.Int32
+    Core.:> Core.QueryParam "orTerms" Core.Text
+    Core.:> Core.QueryParam "q" Core.Text
+    Core.:> Core.QueryParam
+              "relatedSite"
+              Core.Text
+    Core.:> Core.QueryParam "rights" Core.Text
+    Core.:> Core.QueryParam
+              "safe"
+              CseListSafe
+    Core.:> Core.QueryParam
+              "searchType"
+              CseListSearchType
+    Core.:> Core.QueryParam
+              "siteSearch"
+              Core.Text
+    Core.:> Core.QueryParam
+              "siteSearchFilter"
+              CseListSiteSearchFilter
+    Core.:> Core.QueryParam
+              "snippetLength"
+              Core.Int32
+    Core.:> Core.QueryParam
+              "sort"
+              Core.Text
+    Core.:> Core.QueryParam
+              "start"
+              Core.Word32
+    Core.:> Core.QueryParam
+              "uploadType"
+              Core.Text
+    Core.:> Core.QueryParam
+              "upload_protocol"
+              Core.Text
+    Core.:> Core.QueryParam
+              "alt"
+              Core.AltJSON
+    Core.:> Core.Get
+              '[Core.JSON]
+              Search
+
+-- | Returns metadata about the search performed, metadata about the engine used for the search, and the search results.
+--
+-- /See:/ 'newSearchCseList' smart constructor.
+data SearchCseList = SearchCseList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Enables or disables <https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch Simplified and Traditional Chinese Search>. The default value for this parameter is 0 (zero), meaning that the feature is enabled. Supported values are: * @1@: Disabled * @0@: Enabled (default)
+    c2coff :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Restricts search results to documents originating in a particular country. You may use <https://developers.google.com/custom-search/docs/json_api_reference#booleanOperators Boolean operators> in the cr parameter\'s value. Google Search determines the country of a document by analyzing: * the top-level domain (TLD) of the document\'s URL * the geographic location of the Web server\'s IP address See the <https://developers.google.com/custom-search/docs/json_api_reference#countryCollections Country Parameter Values> page for a list of valid values for this parameter.
+    cr :: (Core.Maybe Core.Text),
+    -- | The Programmable Search Engine ID to use for this request.
+    cx :: (Core.Maybe Core.Text),
+    -- | Restricts results to URLs based on date. Supported values include: * @d[number]@: requests results from the specified number of past days. * @w[number]@: requests results from the specified number of past weeks. * @m[number]@: requests results from the specified number of past months. * @y[number]@: requests results from the specified number of past years.
+    dateRestrict :: (Core.Maybe Core.Text),
+    -- | Optional. Enables routing of Programmable Search Engine requests to an alternate search handler.
+    enableAlternateSearchHandler :: (Core.Maybe Core.Bool),
+    -- | Identifies a phrase that all documents in the search results must contain.
+    exactTerms :: (Core.Maybe Core.Text),
+    -- | Identifies a word or phrase that should not appear in any documents in the search results.
+    excludeTerms :: (Core.Maybe Core.Text),
+    -- | Restricts results to files of a specified extension. A list of file types indexable by Google can be found in Search Console <https://support.google.com/webmasters/answer/35287 Help Center>.
+    fileType :: (Core.Maybe Core.Text),
+    -- | Controls turning on or off the duplicate content filter. * See <https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering Automatic Filtering> for more information about Google\'s search results filters. Note that host crowding filtering applies only to multi-site searches. * By default, Google applies filtering to all search results to improve the quality of those results. Acceptable values are: * @0@: Turns off duplicate content filter. * @1@: Turns on duplicate content filter.
+    filter :: (Core.Maybe Core.Text),
+    -- | Geolocation of end user. * The @gl@ parameter value is a two-letter country code. The @gl@ parameter boosts search results whose country of origin matches the parameter value. See the <https://developers.google.com/custom-search/docs/json_api_reference#countryCodes Country Codes> page for a list of valid values. * Specifying a @gl@ parameter value should lead to more relevant results. This is particularly true for international customers and, even more specifically, for customers in English- speaking countries other than the United States.
+    gl :: (Core.Maybe Core.Text),
+    -- | __Deprecated__. Use the @gl@ parameter for a similar effect. The local Google domain (for example, google.com, google.de, or google.fr) to use to perform the search.
+    googlehost :: (Core.Maybe Core.Text),
+    -- | Specifies the ending value for a search range. * Use @lowRange@ and @highRange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    highRange :: (Core.Maybe Core.Text),
+    -- | Sets the user interface language. * Explicitly setting this parameter improves the performance and the quality of your search results. * See the <https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages Interface Languages> section of <https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing Internationalizing Queries and Results Presentation> for more information, and <https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages Supported Interface Languages> for a list of supported languages.
+    hl :: (Core.Maybe Core.Text),
+    -- | Appends the specified query terms to the query, as if they were combined with a logical AND operator.
+    hq :: (Core.Maybe Core.Text),
+    -- | Returns black and white, grayscale, transparent, or color images. Acceptable values are: * @\"color\"@ * @\"gray\"@ * @\"mono\"@: black and white * @\"trans\"@: transparent background
+    imgColorType :: (Core.Maybe CseListImgColorType),
+    -- | Returns images of a specific dominant color. Acceptable values are: * @\"black\"@ * @\"blue\"@ * @\"brown\"@ * @\"gray\"@ * @\"green\"@ * @\"orange\"@ * @\"pink\"@ * @\"purple\"@ * @\"red\"@ * @\"teal\"@ * @\"white\"@ * @\"yellow\"@
+    imgDominantColor :: (Core.Maybe CseListImgDominantColor),
+    -- | Returns images of a specified size. Acceptable values are: * @\"huge\"@ * @\"icon\"@ * @\"large\"@ * @\"medium\"@ * @\"small\"@ * @\"xlarge\"@ * @\"xxlarge\"@
+    imgSize :: (Core.Maybe CseListImgSize),
+    -- | Returns images of a type. Acceptable values are: * @\"clipart\"@ * @\"face\"@ * @\"lineart\"@ * @\"stock\"@ * @\"photo\"@ * @\"animated\"@
+    imgType :: (Core.Maybe CseListImgType),
+    -- | Specifies that all search results should contain a link to a particular URL.
+    linkSite :: (Core.Maybe Core.Text),
+    -- | Specifies the starting value for a search range. Use @lowRange@ and @highRange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    lowRange :: (Core.Maybe Core.Text),
+    -- | Restricts the search to documents written in a particular language (e.g., @lr=lang_ja@). Acceptable values are: * @\"lang_ar\"@: Arabic * @\"lang_bg\"@: Bulgarian * @\"lang_ca\"@: Catalan * @\"lang_cs\"@: Czech * @\"lang_da\"@: Danish * @\"lang_de\"@: German * @\"lang_el\"@: Greek * @\"lang_en\"@: English * @\"lang_es\"@: Spanish * @\"lang_et\"@: Estonian * @\"lang_fi\"@: Finnish * @\"lang_fr\"@: French * @\"lang_hr\"@: Croatian * @\"lang_hu\"@: Hungarian * @\"lang_id\"@: Indonesian * @\"lang_is\"@: Icelandic * @\"lang_it\"@: Italian * @\"lang_iw\"@: Hebrew * @\"lang_ja\"@: Japanese * @\"lang_ko\"@: Korean * @\"lang_lt\"@: Lithuanian * @\"lang_lv\"@: Latvian * @\"lang_nl\"@: Dutch * @\"lang_no\"@: Norwegian * @\"lang_pl\"@: Polish * @\"lang_pt\"@: Portuguese * @\"lang_ro\"@: Romanian * @\"lang_ru\"@: Russian * @\"lang_sk\"@: Slovak * @\"lang_sl\"@: Slovenian * @\"lang_sr\"@: Serbian * @\"lang_sv\"@: Swedish * @\"lang_tr\"@: Turkish * @\"lang_zh-CN\"@: Chinese (Simplified) * @\"lang_zh-TW\"@: Chinese
+    -- (Traditional)
+    lr :: (Core.Maybe Core.Text),
+    -- | Number of search results to return. * Valid values are integers between 1 and 10, inclusive.
+    num :: (Core.Maybe Core.Int32),
+    -- | Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms.
+    orTerms :: (Core.Maybe Core.Text),
+    -- | Query
+    q :: (Core.Maybe Core.Text),
+    -- | Deprecated.
+    relatedSite :: (Core.Maybe Core.Text),
+    -- | Filters based on licensing. Supported values include: @cc_publicdomain@, @cc_attribute@, @cc_sharealike@, @cc_noncommercial@, @cc_nonderived@ and combinations of these. See <https://wiki.creativecommons.org/wiki/CC_Search_integration typical combinations>.
+    rights :: (Core.Maybe Core.Text),
+    -- | Search safety level. Acceptable values are: * @\"active\"@: Enables SafeSearch filtering. * @\"off\"@: Disables SafeSearch filtering. (default)
+    safe :: (Core.Maybe CseListSafe),
+    -- | Specifies the search type: @image@. If unspecified, results are limited to webpages. Acceptable values are: * @\"image\"@: custom image search.
+    searchType :: (Core.Maybe CseListSearchType),
+    -- | Specifies a given site which should always be included or excluded from results (see @siteSearchFilter@ parameter, below).
+    siteSearch :: (Core.Maybe Core.Text),
+    -- | Controls whether to include or exclude results from the site named in the @siteSearch@ parameter. Acceptable values are: * @\"e\"@: exclude * @\"i\"@: include
+    siteSearchFilter :: (Core.Maybe CseListSiteSearchFilter),
+    -- | Optional. Maximum length of snippet text, in characters, to be returned with results. Note: this feature is limited to specific engines. * Valid values are integers between 161 and 1000, inclusive.
+    snippetLength :: (Core.Maybe Core.Int32),
+    -- | The sort expression to apply to the results. The sort parameter specifies that the results be sorted according to the specified expression i.e. sort by date. <https://developers.google.com/custom-search/docs/structured_search#sort-by-attribute Example: sort=date>.
+    sort :: (Core.Maybe Core.Text),
+    -- | The index of the first result to return. The default number of results per page is 10, so @&start=11@ would start at the top of the second page of results. __Note__: The JSON API will never return more than 100 results, even if more than 100 documents match the query, so setting the sum of @start + num@ to a number greater than 100 will produce an error. Also note that the maximum value for @num@ is 10.
+    start :: (Core.Maybe Core.Word32),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SearchCseList' with the minimum fields required to make a request.
+newSearchCseList ::
+  SearchCseList
+newSearchCseList =
+  SearchCseList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      c2coff = Core.Nothing,
+      callback = Core.Nothing,
+      cr = Core.Nothing,
+      cx = Core.Nothing,
+      dateRestrict = Core.Nothing,
+      enableAlternateSearchHandler = Core.Nothing,
+      exactTerms = Core.Nothing,
+      excludeTerms = Core.Nothing,
+      fileType = Core.Nothing,
+      filter = Core.Nothing,
+      gl = Core.Nothing,
+      googlehost = Core.Nothing,
+      highRange = Core.Nothing,
+      hl = Core.Nothing,
+      hq = Core.Nothing,
+      imgColorType = Core.Nothing,
+      imgDominantColor = Core.Nothing,
+      imgSize = Core.Nothing,
+      imgType = Core.Nothing,
+      linkSite = Core.Nothing,
+      lowRange = Core.Nothing,
+      lr = Core.Nothing,
+      num = Core.Nothing,
+      orTerms = Core.Nothing,
+      q = Core.Nothing,
+      relatedSite = Core.Nothing,
+      rights = Core.Nothing,
+      safe = Core.Nothing,
+      searchType = Core.Nothing,
+      siteSearch = Core.Nothing,
+      siteSearchFilter = Core.Nothing,
+      snippetLength = Core.Nothing,
+      sort = Core.Nothing,
+      start = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SearchCseList where
+  type Rs SearchCseList = Search
+  type Scopes SearchCseList = '[]
+  requestClient SearchCseList {..} =
+    go
+      xgafv
+      accessToken
+      c2coff
+      callback
+      cr
+      cx
+      dateRestrict
+      enableAlternateSearchHandler
+      exactTerms
+      excludeTerms
+      fileType
+      filter
+      gl
+      googlehost
+      highRange
+      hl
+      hq
+      imgColorType
+      imgDominantColor
+      imgSize
+      imgType
+      linkSite
+      lowRange
+      lr
+      num
+      orTerms
+      q
+      relatedSite
+      rights
+      safe
+      searchType
+      siteSearch
+      siteSearchFilter
+      snippetLength
+      sort
+      start
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      customSearchService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SearchCseListResource)
+          Core.mempty
diff --git a/gen/Gogol/CustomSearch/Search/Cse/Siterestrict/List.hs b/gen/Gogol/CustomSearch/Search/Cse/Siterestrict/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CustomSearch/Search/Cse/Siterestrict/List.hs
@@ -0,0 +1,302 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CustomSearch.Search.Cse.Siterestrict.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns metadata about the search performed, metadata about the engine used for the search, and the search results. Uses a small set of url patterns.
+--
+-- /See:/ <https://developers.google.com/custom-search/v1/introduction Custom Search API Reference> for @search.cse.siterestrict.list@.
+module Gogol.CustomSearch.Search.Cse.Siterestrict.List
+  ( -- * Resource
+    SearchCseSiterestrictListResource,
+
+    -- ** Constructing a Request
+    SearchCseSiterestrictList (..),
+    newSearchCseSiterestrictList,
+  )
+where
+
+import Gogol.CustomSearch.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @search.cse.siterestrict.list@ method which the
+-- 'SearchCseSiterestrictList' request conforms to.
+type SearchCseSiterestrictListResource =
+  "customsearch"
+    Core.:> "v1"
+    Core.:> "siterestrict"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "c2coff" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "cr" Core.Text
+    Core.:> Core.QueryParam "cx" Core.Text
+    Core.:> Core.QueryParam "dateRestrict" Core.Text
+    Core.:> Core.QueryParam "enableAlternateSearchHandler" Core.Bool
+    Core.:> Core.QueryParam "exactTerms" Core.Text
+    Core.:> Core.QueryParam "excludeTerms" Core.Text
+    Core.:> Core.QueryParam "fileType" Core.Text
+    Core.:> Core.QueryParam "filter" Core.Text
+    Core.:> Core.QueryParam "gl" Core.Text
+    Core.:> Core.QueryParam "googlehost" Core.Text
+    Core.:> Core.QueryParam "highRange" Core.Text
+    Core.:> Core.QueryParam "hl" Core.Text
+    Core.:> Core.QueryParam "hq" Core.Text
+    Core.:> Core.QueryParam
+              "imgColorType"
+              CseSiterestrictListImgColorType
+    Core.:> Core.QueryParam
+              "imgDominantColor"
+              CseSiterestrictListImgDominantColor
+    Core.:> Core.QueryParam
+              "imgSize"
+              CseSiterestrictListImgSize
+    Core.:> Core.QueryParam
+              "imgType"
+              CseSiterestrictListImgType
+    Core.:> Core.QueryParam "linkSite" Core.Text
+    Core.:> Core.QueryParam "lowRange" Core.Text
+    Core.:> Core.QueryParam "lr" Core.Text
+    Core.:> Core.QueryParam "num" Core.Int32
+    Core.:> Core.QueryParam "orTerms" Core.Text
+    Core.:> Core.QueryParam "q" Core.Text
+    Core.:> Core.QueryParam
+              "relatedSite"
+              Core.Text
+    Core.:> Core.QueryParam
+              "rights"
+              Core.Text
+    Core.:> Core.QueryParam
+              "safe"
+              CseSiterestrictListSafe
+    Core.:> Core.QueryParam
+              "searchType"
+              CseSiterestrictListSearchType
+    Core.:> Core.QueryParam
+              "siteSearch"
+              Core.Text
+    Core.:> Core.QueryParam
+              "siteSearchFilter"
+              CseSiterestrictListSiteSearchFilter
+    Core.:> Core.QueryParam
+              "snippetLength"
+              Core.Int32
+    Core.:> Core.QueryParam
+              "sort"
+              Core.Text
+    Core.:> Core.QueryParam
+              "start"
+              Core.Word32
+    Core.:> Core.QueryParam
+              "uploadType"
+              Core.Text
+    Core.:> Core.QueryParam
+              "upload_protocol"
+              Core.Text
+    Core.:> Core.QueryParam
+              "alt"
+              Core.AltJSON
+    Core.:> Core.Get
+              '[Core.JSON]
+              Search
+
+-- | Returns metadata about the search performed, metadata about the engine used for the search, and the search results. Uses a small set of url patterns.
+--
+-- /See:/ 'newSearchCseSiterestrictList' smart constructor.
+data SearchCseSiterestrictList = SearchCseSiterestrictList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Enables or disables <https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch Simplified and Traditional Chinese Search>. The default value for this parameter is 0 (zero), meaning that the feature is enabled. Supported values are: * @1@: Disabled * @0@: Enabled (default)
+    c2coff :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Restricts search results to documents originating in a particular country. You may use <https://developers.google.com/custom-search/docs/json_api_reference#booleanOperators Boolean operators> in the cr parameter\'s value. Google Search determines the country of a document by analyzing: * the top-level domain (TLD) of the document\'s URL * the geographic location of the Web server\'s IP address See the <https://developers.google.com/custom-search/docs/json_api_reference#countryCollections Country Parameter Values> page for a list of valid values for this parameter.
+    cr :: (Core.Maybe Core.Text),
+    -- | The Programmable Search Engine ID to use for this request.
+    cx :: (Core.Maybe Core.Text),
+    -- | Restricts results to URLs based on date. Supported values include: * @d[number]@: requests results from the specified number of past days. * @w[number]@: requests results from the specified number of past weeks. * @m[number]@: requests results from the specified number of past months. * @y[number]@: requests results from the specified number of past years.
+    dateRestrict :: (Core.Maybe Core.Text),
+    -- | Optional. Enables routing of Programmable Search Engine requests to an alternate search handler.
+    enableAlternateSearchHandler :: (Core.Maybe Core.Bool),
+    -- | Identifies a phrase that all documents in the search results must contain.
+    exactTerms :: (Core.Maybe Core.Text),
+    -- | Identifies a word or phrase that should not appear in any documents in the search results.
+    excludeTerms :: (Core.Maybe Core.Text),
+    -- | Restricts results to files of a specified extension. A list of file types indexable by Google can be found in Search Console <https://support.google.com/webmasters/answer/35287 Help Center>.
+    fileType :: (Core.Maybe Core.Text),
+    -- | Controls turning on or off the duplicate content filter. * See <https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering Automatic Filtering> for more information about Google\'s search results filters. Note that host crowding filtering applies only to multi-site searches. * By default, Google applies filtering to all search results to improve the quality of those results. Acceptable values are: * @0@: Turns off duplicate content filter. * @1@: Turns on duplicate content filter.
+    filter :: (Core.Maybe Core.Text),
+    -- | Geolocation of end user. * The @gl@ parameter value is a two-letter country code. The @gl@ parameter boosts search results whose country of origin matches the parameter value. See the <https://developers.google.com/custom-search/docs/json_api_reference#countryCodes Country Codes> page for a list of valid values. * Specifying a @gl@ parameter value should lead to more relevant results. This is particularly true for international customers and, even more specifically, for customers in English- speaking countries other than the United States.
+    gl :: (Core.Maybe Core.Text),
+    -- | __Deprecated__. Use the @gl@ parameter for a similar effect. The local Google domain (for example, google.com, google.de, or google.fr) to use to perform the search.
+    googlehost :: (Core.Maybe Core.Text),
+    -- | Specifies the ending value for a search range. * Use @lowRange@ and @highRange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    highRange :: (Core.Maybe Core.Text),
+    -- | Sets the user interface language. * Explicitly setting this parameter improves the performance and the quality of your search results. * See the <https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages Interface Languages> section of <https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing Internationalizing Queries and Results Presentation> for more information, and <https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages Supported Interface Languages> for a list of supported languages.
+    hl :: (Core.Maybe Core.Text),
+    -- | Appends the specified query terms to the query, as if they were combined with a logical AND operator.
+    hq :: (Core.Maybe Core.Text),
+    -- | Returns black and white, grayscale, transparent, or color images. Acceptable values are: * @\"color\"@ * @\"gray\"@ * @\"mono\"@: black and white * @\"trans\"@: transparent background
+    imgColorType :: (Core.Maybe CseSiterestrictListImgColorType),
+    -- | Returns images of a specific dominant color. Acceptable values are: * @\"black\"@ * @\"blue\"@ * @\"brown\"@ * @\"gray\"@ * @\"green\"@ * @\"orange\"@ * @\"pink\"@ * @\"purple\"@ * @\"red\"@ * @\"teal\"@ * @\"white\"@ * @\"yellow\"@
+    imgDominantColor :: (Core.Maybe CseSiterestrictListImgDominantColor),
+    -- | Returns images of a specified size. Acceptable values are: * @\"huge\"@ * @\"icon\"@ * @\"large\"@ * @\"medium\"@ * @\"small\"@ * @\"xlarge\"@ * @\"xxlarge\"@
+    imgSize :: (Core.Maybe CseSiterestrictListImgSize),
+    -- | Returns images of a type. Acceptable values are: * @\"clipart\"@ * @\"face\"@ * @\"lineart\"@ * @\"stock\"@ * @\"photo\"@ * @\"animated\"@
+    imgType :: (Core.Maybe CseSiterestrictListImgType),
+    -- | Specifies that all search results should contain a link to a particular URL.
+    linkSite :: (Core.Maybe Core.Text),
+    -- | Specifies the starting value for a search range. Use @lowRange@ and @highRange@ to append an inclusive search range of @lowRange...highRange@ to the query.
+    lowRange :: (Core.Maybe Core.Text),
+    -- | Restricts the search to documents written in a particular language (e.g., @lr=lang_ja@). Acceptable values are: * @\"lang_ar\"@: Arabic * @\"lang_bg\"@: Bulgarian * @\"lang_ca\"@: Catalan * @\"lang_cs\"@: Czech * @\"lang_da\"@: Danish * @\"lang_de\"@: German * @\"lang_el\"@: Greek * @\"lang_en\"@: English * @\"lang_es\"@: Spanish * @\"lang_et\"@: Estonian * @\"lang_fi\"@: Finnish * @\"lang_fr\"@: French * @\"lang_hr\"@: Croatian * @\"lang_hu\"@: Hungarian * @\"lang_id\"@: Indonesian * @\"lang_is\"@: Icelandic * @\"lang_it\"@: Italian * @\"lang_iw\"@: Hebrew * @\"lang_ja\"@: Japanese * @\"lang_ko\"@: Korean * @\"lang_lt\"@: Lithuanian * @\"lang_lv\"@: Latvian * @\"lang_nl\"@: Dutch * @\"lang_no\"@: Norwegian * @\"lang_pl\"@: Polish * @\"lang_pt\"@: Portuguese * @\"lang_ro\"@: Romanian * @\"lang_ru\"@: Russian * @\"lang_sk\"@: Slovak * @\"lang_sl\"@: Slovenian * @\"lang_sr\"@: Serbian * @\"lang_sv\"@: Swedish * @\"lang_tr\"@: Turkish * @\"lang_zh-CN\"@: Chinese (Simplified) * @\"lang_zh-TW\"@: Chinese
+    -- (Traditional)
+    lr :: (Core.Maybe Core.Text),
+    -- | Number of search results to return. * Valid values are integers between 1 and 10, inclusive.
+    num :: (Core.Maybe Core.Int32),
+    -- | Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms.
+    orTerms :: (Core.Maybe Core.Text),
+    -- | Query
+    q :: (Core.Maybe Core.Text),
+    -- | Deprecated.
+    relatedSite :: (Core.Maybe Core.Text),
+    -- | Filters based on licensing. Supported values include: @cc_publicdomain@, @cc_attribute@, @cc_sharealike@, @cc_noncommercial@, @cc_nonderived@ and combinations of these. See <https://wiki.creativecommons.org/wiki/CC_Search_integration typical combinations>.
+    rights :: (Core.Maybe Core.Text),
+    -- | Search safety level. Acceptable values are: * @\"active\"@: Enables SafeSearch filtering. * @\"off\"@: Disables SafeSearch filtering. (default)
+    safe :: (Core.Maybe CseSiterestrictListSafe),
+    -- | Specifies the search type: @image@. If unspecified, results are limited to webpages. Acceptable values are: * @\"image\"@: custom image search.
+    searchType :: (Core.Maybe CseSiterestrictListSearchType),
+    -- | Specifies a given site which should always be included or excluded from results (see @siteSearchFilter@ parameter, below).
+    siteSearch :: (Core.Maybe Core.Text),
+    -- | Controls whether to include or exclude results from the site named in the @siteSearch@ parameter. Acceptable values are: * @\"e\"@: exclude * @\"i\"@: include
+    siteSearchFilter :: (Core.Maybe CseSiterestrictListSiteSearchFilter),
+    -- | Optional. Maximum length of snippet text, in characters, to be returned with results. Note: this feature is limited to specific engines. * Valid values are integers between 161 and 1000, inclusive.
+    snippetLength :: (Core.Maybe Core.Int32),
+    -- | The sort expression to apply to the results. The sort parameter specifies that the results be sorted according to the specified expression i.e. sort by date. <https://developers.google.com/custom-search/docs/structured_search#sort-by-attribute Example: sort=date>.
+    sort :: (Core.Maybe Core.Text),
+    -- | The index of the first result to return. The default number of results per page is 10, so @&start=11@ would start at the top of the second page of results. __Note__: The JSON API will never return more than 100 results, even if more than 100 documents match the query, so setting the sum of @start + num@ to a number greater than 100 will produce an error. Also note that the maximum value for @num@ is 10.
+    start :: (Core.Maybe Core.Word32),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SearchCseSiterestrictList' with the minimum fields required to make a request.
+newSearchCseSiterestrictList ::
+  SearchCseSiterestrictList
+newSearchCseSiterestrictList =
+  SearchCseSiterestrictList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      c2coff = Core.Nothing,
+      callback = Core.Nothing,
+      cr = Core.Nothing,
+      cx = Core.Nothing,
+      dateRestrict = Core.Nothing,
+      enableAlternateSearchHandler = Core.Nothing,
+      exactTerms = Core.Nothing,
+      excludeTerms = Core.Nothing,
+      fileType = Core.Nothing,
+      filter = Core.Nothing,
+      gl = Core.Nothing,
+      googlehost = Core.Nothing,
+      highRange = Core.Nothing,
+      hl = Core.Nothing,
+      hq = Core.Nothing,
+      imgColorType = Core.Nothing,
+      imgDominantColor = Core.Nothing,
+      imgSize = Core.Nothing,
+      imgType = Core.Nothing,
+      linkSite = Core.Nothing,
+      lowRange = Core.Nothing,
+      lr = Core.Nothing,
+      num = Core.Nothing,
+      orTerms = Core.Nothing,
+      q = Core.Nothing,
+      relatedSite = Core.Nothing,
+      rights = Core.Nothing,
+      safe = Core.Nothing,
+      searchType = Core.Nothing,
+      siteSearch = Core.Nothing,
+      siteSearchFilter = Core.Nothing,
+      snippetLength = Core.Nothing,
+      sort = Core.Nothing,
+      start = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest SearchCseSiterestrictList where
+  type Rs SearchCseSiterestrictList = Search
+  type Scopes SearchCseSiterestrictList = '[]
+  requestClient SearchCseSiterestrictList {..} =
+    go
+      xgafv
+      accessToken
+      c2coff
+      callback
+      cr
+      cx
+      dateRestrict
+      enableAlternateSearchHandler
+      exactTerms
+      excludeTerms
+      fileType
+      filter
+      gl
+      googlehost
+      highRange
+      hl
+      hq
+      imgColorType
+      imgDominantColor
+      imgSize
+      imgType
+      linkSite
+      lowRange
+      lr
+      num
+      orTerms
+      q
+      relatedSite
+      rights
+      safe
+      searchType
+      siteSearch
+      siteSearchFilter
+      snippetLength
+      sort
+      start
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      customSearchService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy SearchCseSiterestrictListResource)
+          Core.mempty
diff --git a/gen/Gogol/CustomSearch/Types.hs b/gen/Gogol/CustomSearch/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CustomSearch/Types.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CustomSearch.Types
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.CustomSearch.Types
+  ( -- * Configuration
+    customSearchService,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** Promotion
+    Promotion (..),
+    newPromotion,
+
+    -- ** Promotion_BodyLinesItem
+    Promotion_BodyLinesItem (..),
+    newPromotion_BodyLinesItem,
+
+    -- ** Promotion_Image
+    Promotion_Image (..),
+    newPromotion_Image,
+
+    -- ** Result
+    Result (..),
+    newResult,
+
+    -- ** Result_Image
+    Result_Image (..),
+    newResult_Image,
+
+    -- ** Result_LabelsItem
+    Result_LabelsItem (..),
+    newResult_LabelsItem,
+
+    -- ** Result_Pagemap
+    Result_Pagemap (..),
+    newResult_Pagemap,
+
+    -- ** Search
+    Search (..),
+    newSearch,
+
+    -- ** Search_Context
+    Search_Context (..),
+    newSearch_Context,
+
+    -- ** Search_Queries
+    Search_Queries (..),
+    newSearch_Queries,
+
+    -- ** Search_Queries_NextPageItem
+    Search_Queries_NextPageItem (..),
+    newSearch_Queries_NextPageItem,
+
+    -- ** Search_Queries_PreviousPageItem
+    Search_Queries_PreviousPageItem (..),
+    newSearch_Queries_PreviousPageItem,
+
+    -- ** Search_Queries_RequestItem
+    Search_Queries_RequestItem (..),
+    newSearch_Queries_RequestItem,
+
+    -- ** Search_SearchInformation
+    Search_SearchInformation (..),
+    newSearch_SearchInformation,
+
+    -- ** Search_Spelling
+    Search_Spelling (..),
+    newSearch_Spelling,
+
+    -- ** Search_Url
+    Search_Url (..),
+    newSearch_Url,
+
+    -- ** CseListImgColorType
+    CseListImgColorType (..),
+
+    -- ** CseListImgDominantColor
+    CseListImgDominantColor (..),
+
+    -- ** CseListImgSize
+    CseListImgSize (..),
+
+    -- ** CseListImgType
+    CseListImgType (..),
+
+    -- ** CseListSafe
+    CseListSafe (..),
+
+    -- ** CseListSearchType
+    CseListSearchType (..),
+
+    -- ** CseListSiteSearchFilter
+    CseListSiteSearchFilter (..),
+
+    -- ** CseSiterestrictListImgColorType
+    CseSiterestrictListImgColorType (..),
+
+    -- ** CseSiterestrictListImgDominantColor
+    CseSiterestrictListImgDominantColor (..),
+
+    -- ** CseSiterestrictListImgSize
+    CseSiterestrictListImgSize (..),
+
+    -- ** CseSiterestrictListImgType
+    CseSiterestrictListImgType (..),
+
+    -- ** CseSiterestrictListSafe
+    CseSiterestrictListSafe (..),
+
+    -- ** CseSiterestrictListSearchType
+    CseSiterestrictListSearchType (..),
+
+    -- ** CseSiterestrictListSiteSearchFilter
+    CseSiterestrictListSiteSearchFilter (..),
+  )
+where
+
+import Gogol.CustomSearch.Internal.Product
+import Gogol.CustomSearch.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Default request referring to version @v1@ of the Custom Search API. This contains the host and root path used as a starting point for constructing service requests.
+customSearchService :: Core.ServiceConfig
+customSearchService =
+  Core.defaultService
+    (Core.ServiceId "customsearch:v1")
+    "customsearch.googleapis.com"
diff --git a/gen/Network/Google/CustomSearch.hs b/gen/Network/Google/CustomSearch.hs
deleted file mode 100644
--- a/gen/Network/Google/CustomSearch.hs
+++ /dev/null
@@ -1,265 +0,0 @@
-{-# LANGUAGE DataKinds         #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE TypeOperators     #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- |
--- Module      : Network.Google.CustomSearch
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Searches over a website or collection of websites
---
--- /See:/ <https://developers.google.com/custom-search/v1/using_rest CustomSearch API Reference>
-module Network.Google.CustomSearch
-    (
-    -- * Service Configuration
-      customSearchService
-
-    -- * API Declaration
-    , CustomSearchAPI
-
-    -- * Resources
-
-    -- ** search.cse.list
-    , module Network.Google.Resource.Search.CSE.List
-
-    -- ** search.cse.siterestrict.list
-    , module Network.Google.Resource.Search.CSE.Siterestrict.List
-
-    -- * Types
-
-    -- ** CSEListImgType
-    , CSEListImgType (..)
-
-    -- ** PromotionImage
-    , PromotionImage
-    , promotionImage
-    , piHeight
-    , piWidth
-    , piSource
-
-    -- ** Context
-    , Context
-    , context
-    , cFacets
-    , cTitle
-
-    -- ** CSEListSiteSearchFilter
-    , CSEListSiteSearchFilter (..)
-
-    -- ** SearchQueries
-    , SearchQueries
-    , searchQueries
-    , sqAddtional
-
-    -- ** ResultPagemapAdditionalItem
-    , ResultPagemapAdditionalItem
-    , resultPagemapAdditionalItem
-    , rpaiAddtional
-
-    -- ** SearchURL
-    , SearchURL
-    , searchURL
-    , suType
-    , suTemplate
-
-    -- ** CSESiterestrictListFilter
-    , CSESiterestrictListFilter (..)
-
-    -- ** SearchSpelling
-    , SearchSpelling
-    , searchSpelling
-    , ssCorrectedQuery
-    , ssHTMLCorrectedQuery
-
-    -- ** CSESiterestrictListImgType
-    , CSESiterestrictListImgType (..)
-
-    -- ** CSEListImgDominantColor
-    , CSEListImgDominantColor (..)
-
-    -- ** ResultImage
-    , ResultImage
-    , resultImage
-    , riThumbnailLink
-    , riHeight
-    , riByteSize
-    , riContextLink
-    , riThumbnailHeight
-    , riWidth
-    , riThumbnailWidth
-
-    -- ** CSEListSafe
-    , CSEListSafe (..)
-
-    -- ** CSESiterestrictListImgSize
-    , CSESiterestrictListImgSize (..)
-
-    -- ** ResultPagemap
-    , ResultPagemap
-    , resultPagemap
-    , rpAddtional
-
-    -- ** CSESiterestrictListImgColorType
-    , CSESiterestrictListImgColorType (..)
-
-    -- ** CSEListImgColorType
-    , CSEListImgColorType (..)
-
-    -- ** CSESiterestrictListSafe
-    , CSESiterestrictListSafe (..)
-
-    -- ** Result
-    , Result
-    , result
-    , rMime
-    , rImage
-    , rPagemap
-    , rDisplayLink
-    , rFileFormat
-    , rSnippet
-    , rKind
-    , rLink
-    , rHTMLSnippet
-    , rHTMLFormattedURL
-    , rCacheId
-    , rFormattedURL
-    , rHTMLTitle
-    , rLabels
-    , rTitle
-
-    -- ** ResultLabelsItem
-    , ResultLabelsItem
-    , resultLabelsItem
-    , rliName
-    , rliDisplayName
-    , rliLabelWithOp
-
-    -- ** CSESiterestrictListImgDominantColor
-    , CSESiterestrictListImgDominantColor (..)
-
-    -- ** SearchSearchInformation
-    , SearchSearchInformation
-    , searchSearchInformation
-    , ssiSearchTime
-    , ssiFormattedSearchTime
-    , ssiTotalResults
-    , ssiFormattedTotalResults
-
-    -- ** CSEListFilter
-    , CSEListFilter (..)
-
-    -- ** Query
-    , Query
-    , query
-    , qImgDominantColor
-    , qOutputEncoding
-    , qSiteSearchFilter
-    , qInputEncoding
-    , qOrTerms
-    , qSearchTerms
-    , qStartPage
-    , qRights
-    , qCount
-    , qExcludeTerms
-    , qFileType
-    , qSearchType
-    , qGoogleHost
-    , qDisableCnTwTranslation
-    , qRelatedSite
-    , qHl
-    , qSort
-    , qLanguage
-    , qSiteSearch
-    , qFilter
-    , qTotalResults
-    , qDateRestrict
-    , qTitle
-    , qLinkSite
-    , qLowRange
-    , qImgType
-    , qGl
-    , qCx
-    , qImgColorType
-    , qImgSize
-    , qExactTerms
-    , qStartIndex
-    , qCr
-    , qSafe
-    , qHq
-    , qHighRange
-
-    -- ** CSESiterestrictListSiteSearchFilter
-    , CSESiterestrictListSiteSearchFilter (..)
-
-    -- ** PromotionBodyLinesItem
-    , PromotionBodyLinesItem
-    , promotionBodyLinesItem
-    , pbliLink
-    , pbliURL
-    , pbliHTMLTitle
-    , pbliTitle
-
-    -- ** Promotion
-    , Promotion
-    , promotion
-    , pImage
-    , pDisplayLink
-    , pBodyLines
-    , pLink
-    , pHTMLTitle
-    , pTitle
-
-    -- ** CSESiterestrictListLr
-    , CSESiterestrictListLr (..)
-
-    -- ** CSESiterestrictListSearchType
-    , CSESiterestrictListSearchType (..)
-
-    -- ** Search
-    , Search
-    , search
-    , sQueries
-    , sContext
-    , sKind
-    , sURL
-    , sItems
-    , sSearchInformation
-    , sPromotions
-    , sSpelling
-
-    -- ** CSEListLr
-    , CSEListLr (..)
-
-    -- ** ContextFacetsItemItem
-    , ContextFacetsItemItem
-    , contextFacetsItemItem
-    , cfiiAnchor
-    , cfiiLabelWithOp
-    , cfiiLabel
-
-    -- ** CSEListSearchType
-    , CSEListSearchType (..)
-
-    -- ** CSEListImgSize
-    , CSEListImgSize (..)
-    ) where
-
-import           Network.Google.CustomSearch.Types
-import           Network.Google.Prelude
-import           Network.Google.Resource.Search.CSE.List
-import           Network.Google.Resource.Search.CSE.Siterestrict.List
-
-{- $resources
-TODO
--}
-
--- | Represents the entirety of the methods and resources available for the CustomSearch API service.
-type CustomSearchAPI =
-     CSESiterestrictListResource :<|> CSEListResource
diff --git a/gen/Network/Google/CustomSearch/Types.hs b/gen/Network/Google/CustomSearch/Types.hs
deleted file mode 100644
--- a/gen/Network/Google/CustomSearch/Types.hs
+++ /dev/null
@@ -1,247 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.CustomSearch.Types
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.CustomSearch.Types
-    (
-    -- * Service Configuration
-      customSearchService
-
-    -- * CSEListImgType
-    , CSEListImgType (..)
-
-    -- * PromotionImage
-    , PromotionImage
-    , promotionImage
-    , piHeight
-    , piWidth
-    , piSource
-
-    -- * Context
-    , Context
-    , context
-    , cFacets
-    , cTitle
-
-    -- * CSEListSiteSearchFilter
-    , CSEListSiteSearchFilter (..)
-
-    -- * SearchQueries
-    , SearchQueries
-    , searchQueries
-    , sqAddtional
-
-    -- * ResultPagemapAdditionalItem
-    , ResultPagemapAdditionalItem
-    , resultPagemapAdditionalItem
-    , rpaiAddtional
-
-    -- * SearchURL
-    , SearchURL
-    , searchURL
-    , suType
-    , suTemplate
-
-    -- * CSESiterestrictListFilter
-    , CSESiterestrictListFilter (..)
-
-    -- * SearchSpelling
-    , SearchSpelling
-    , searchSpelling
-    , ssCorrectedQuery
-    , ssHTMLCorrectedQuery
-
-    -- * CSESiterestrictListImgType
-    , CSESiterestrictListImgType (..)
-
-    -- * CSEListImgDominantColor
-    , CSEListImgDominantColor (..)
-
-    -- * ResultImage
-    , ResultImage
-    , resultImage
-    , riThumbnailLink
-    , riHeight
-    , riByteSize
-    , riContextLink
-    , riThumbnailHeight
-    , riWidth
-    , riThumbnailWidth
-
-    -- * CSEListSafe
-    , CSEListSafe (..)
-
-    -- * CSESiterestrictListImgSize
-    , CSESiterestrictListImgSize (..)
-
-    -- * ResultPagemap
-    , ResultPagemap
-    , resultPagemap
-    , rpAddtional
-
-    -- * CSESiterestrictListImgColorType
-    , CSESiterestrictListImgColorType (..)
-
-    -- * CSEListImgColorType
-    , CSEListImgColorType (..)
-
-    -- * CSESiterestrictListSafe
-    , CSESiterestrictListSafe (..)
-
-    -- * Result
-    , Result
-    , result
-    , rMime
-    , rImage
-    , rPagemap
-    , rDisplayLink
-    , rFileFormat
-    , rSnippet
-    , rKind
-    , rLink
-    , rHTMLSnippet
-    , rHTMLFormattedURL
-    , rCacheId
-    , rFormattedURL
-    , rHTMLTitle
-    , rLabels
-    , rTitle
-
-    -- * ResultLabelsItem
-    , ResultLabelsItem
-    , resultLabelsItem
-    , rliName
-    , rliDisplayName
-    , rliLabelWithOp
-
-    -- * CSESiterestrictListImgDominantColor
-    , CSESiterestrictListImgDominantColor (..)
-
-    -- * SearchSearchInformation
-    , SearchSearchInformation
-    , searchSearchInformation
-    , ssiSearchTime
-    , ssiFormattedSearchTime
-    , ssiTotalResults
-    , ssiFormattedTotalResults
-
-    -- * CSEListFilter
-    , CSEListFilter (..)
-
-    -- * Query
-    , Query
-    , query
-    , qImgDominantColor
-    , qOutputEncoding
-    , qSiteSearchFilter
-    , qInputEncoding
-    , qOrTerms
-    , qSearchTerms
-    , qStartPage
-    , qRights
-    , qCount
-    , qExcludeTerms
-    , qFileType
-    , qSearchType
-    , qGoogleHost
-    , qDisableCnTwTranslation
-    , qRelatedSite
-    , qHl
-    , qSort
-    , qLanguage
-    , qSiteSearch
-    , qFilter
-    , qTotalResults
-    , qDateRestrict
-    , qTitle
-    , qLinkSite
-    , qLowRange
-    , qImgType
-    , qGl
-    , qCx
-    , qImgColorType
-    , qImgSize
-    , qExactTerms
-    , qStartIndex
-    , qCr
-    , qSafe
-    , qHq
-    , qHighRange
-
-    -- * CSESiterestrictListSiteSearchFilter
-    , CSESiterestrictListSiteSearchFilter (..)
-
-    -- * PromotionBodyLinesItem
-    , PromotionBodyLinesItem
-    , promotionBodyLinesItem
-    , pbliLink
-    , pbliURL
-    , pbliHTMLTitle
-    , pbliTitle
-
-    -- * Promotion
-    , Promotion
-    , promotion
-    , pImage
-    , pDisplayLink
-    , pBodyLines
-    , pLink
-    , pHTMLTitle
-    , pTitle
-
-    -- * CSESiterestrictListLr
-    , CSESiterestrictListLr (..)
-
-    -- * CSESiterestrictListSearchType
-    , CSESiterestrictListSearchType (..)
-
-    -- * Search
-    , Search
-    , search
-    , sQueries
-    , sContext
-    , sKind
-    , sURL
-    , sItems
-    , sSearchInformation
-    , sPromotions
-    , sSpelling
-
-    -- * CSEListLr
-    , CSEListLr (..)
-
-    -- * ContextFacetsItemItem
-    , ContextFacetsItemItem
-    , contextFacetsItemItem
-    , cfiiAnchor
-    , cfiiLabelWithOp
-    , cfiiLabel
-
-    -- * CSEListSearchType
-    , CSEListSearchType (..)
-
-    -- * CSEListImgSize
-    , CSEListImgSize (..)
-    ) where
-
-import           Network.Google.CustomSearch.Types.Product
-import           Network.Google.CustomSearch.Types.Sum
-import           Network.Google.Prelude
-
--- | Default request referring to version 'v1' of the CustomSearch API. This contains the host and root path used as a starting point for constructing service requests.
-customSearchService :: ServiceConfig
-customSearchService
-  = defaultService (ServiceId "customsearch:v1")
-      "www.googleapis.com"
diff --git a/gen/Network/Google/CustomSearch/Types/Product.hs b/gen/Network/Google/CustomSearch/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/Google/CustomSearch/Types/Product.hs
+++ /dev/null
@@ -1,1435 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.CustomSearch.Types.Product
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.CustomSearch.Types.Product where
-
-import           Network.Google.CustomSearch.Types.Sum
-import           Network.Google.Prelude
-
---
--- /See:/ 'promotionImage' smart constructor.
-data PromotionImage =
-  PromotionImage'
-    { _piHeight :: !(Maybe (Textual Int32))
-    , _piWidth  :: !(Maybe (Textual Int32))
-    , _piSource :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PromotionImage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piHeight'
---
--- * 'piWidth'
---
--- * 'piSource'
-promotionImage
-    :: PromotionImage
-promotionImage =
-  PromotionImage' {_piHeight = Nothing, _piWidth = Nothing, _piSource = Nothing}
-
-
-piHeight :: Lens' PromotionImage (Maybe Int32)
-piHeight
-  = lens _piHeight (\ s a -> s{_piHeight = a}) .
-      mapping _Coerce
-
-piWidth :: Lens' PromotionImage (Maybe Int32)
-piWidth
-  = lens _piWidth (\ s a -> s{_piWidth = a}) .
-      mapping _Coerce
-
-piSource :: Lens' PromotionImage (Maybe Text)
-piSource = lens _piSource (\ s a -> s{_piSource = a})
-
-instance FromJSON PromotionImage where
-        parseJSON
-          = withObject "PromotionImage"
-              (\ o ->
-                 PromotionImage' <$>
-                   (o .:? "height") <*> (o .:? "width") <*>
-                     (o .:? "source"))
-
-instance ToJSON PromotionImage where
-        toJSON PromotionImage'{..}
-          = object
-              (catMaybes
-                 [("height" .=) <$> _piHeight,
-                  ("width" .=) <$> _piWidth,
-                  ("source" .=) <$> _piSource])
-
---
--- /See:/ 'context' smart constructor.
-data Context =
-  Context'
-    { _cFacets :: !(Maybe [[ContextFacetsItemItem]])
-    , _cTitle  :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Context' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cFacets'
---
--- * 'cTitle'
-context
-    :: Context
-context = Context' {_cFacets = Nothing, _cTitle = Nothing}
-
-
-cFacets :: Lens' Context [[ContextFacetsItemItem]]
-cFacets
-  = lens _cFacets (\ s a -> s{_cFacets = a}) . _Default
-      . _Coerce
-
-cTitle :: Lens' Context (Maybe Text)
-cTitle = lens _cTitle (\ s a -> s{_cTitle = a})
-
-instance FromJSON Context where
-        parseJSON
-          = withObject "Context"
-              (\ o ->
-                 Context' <$>
-                   (o .:? "facets" .!= mempty) <*> (o .:? "title"))
-
-instance ToJSON Context where
-        toJSON Context'{..}
-          = object
-              (catMaybes
-                 [("facets" .=) <$> _cFacets,
-                  ("title" .=) <$> _cTitle])
-
---
--- /See:/ 'searchQueries' smart constructor.
-newtype SearchQueries =
-  SearchQueries'
-    { _sqAddtional :: HashMap Text [Query]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SearchQueries' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sqAddtional'
-searchQueries
-    :: HashMap Text [Query] -- ^ 'sqAddtional'
-    -> SearchQueries
-searchQueries pSqAddtional_ =
-  SearchQueries' {_sqAddtional = _Coerce # pSqAddtional_}
-
-
-sqAddtional :: Lens' SearchQueries (HashMap Text [Query])
-sqAddtional
-  = lens _sqAddtional (\ s a -> s{_sqAddtional = a}) .
-      _Coerce
-
-instance FromJSON SearchQueries where
-        parseJSON
-          = withObject "SearchQueries"
-              (\ o -> SearchQueries' <$> (parseJSONObject o))
-
-instance ToJSON SearchQueries where
-        toJSON = toJSON . _sqAddtional
-
---
--- /See:/ 'resultPagemapAdditionalItem' smart constructor.
-newtype ResultPagemapAdditionalItem =
-  ResultPagemapAdditionalItem'
-    { _rpaiAddtional :: HashMap Text JSONValue
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ResultPagemapAdditionalItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rpaiAddtional'
-resultPagemapAdditionalItem
-    :: HashMap Text JSONValue -- ^ 'rpaiAddtional'
-    -> ResultPagemapAdditionalItem
-resultPagemapAdditionalItem pRpaiAddtional_ =
-  ResultPagemapAdditionalItem' {_rpaiAddtional = _Coerce # pRpaiAddtional_}
-
-
-rpaiAddtional :: Lens' ResultPagemapAdditionalItem (HashMap Text JSONValue)
-rpaiAddtional
-  = lens _rpaiAddtional
-      (\ s a -> s{_rpaiAddtional = a})
-      . _Coerce
-
-instance FromJSON ResultPagemapAdditionalItem where
-        parseJSON
-          = withObject "ResultPagemapAdditionalItem"
-              (\ o ->
-                 ResultPagemapAdditionalItem' <$> (parseJSONObject o))
-
-instance ToJSON ResultPagemapAdditionalItem where
-        toJSON = toJSON . _rpaiAddtional
-
---
--- /See:/ 'searchURL' smart constructor.
-data SearchURL =
-  SearchURL'
-    { _suType     :: !Text
-    , _suTemplate :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SearchURL' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'suType'
---
--- * 'suTemplate'
-searchURL
-    :: SearchURL
-searchURL =
-  SearchURL'
-    { _suType = "application/json"
-    , _suTemplate =
-        "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"
-    }
-
-
-suType :: Lens' SearchURL Text
-suType = lens _suType (\ s a -> s{_suType = a})
-
-suTemplate :: Lens' SearchURL Text
-suTemplate
-  = lens _suTemplate (\ s a -> s{_suTemplate = a})
-
-instance FromJSON SearchURL where
-        parseJSON
-          = withObject "SearchURL"
-              (\ o ->
-                 SearchURL' <$>
-                   (o .:? "type" .!= "application/json") <*>
-                     (o .:? "template" .!=
-                        "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"))
-
-instance ToJSON SearchURL where
-        toJSON SearchURL'{..}
-          = object
-              (catMaybes
-                 [Just ("type" .= _suType),
-                  Just ("template" .= _suTemplate)])
-
---
--- /See:/ 'searchSpelling' smart constructor.
-data SearchSpelling =
-  SearchSpelling'
-    { _ssCorrectedQuery     :: !(Maybe Text)
-    , _ssHTMLCorrectedQuery :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SearchSpelling' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssCorrectedQuery'
---
--- * 'ssHTMLCorrectedQuery'
-searchSpelling
-    :: SearchSpelling
-searchSpelling =
-  SearchSpelling' {_ssCorrectedQuery = Nothing, _ssHTMLCorrectedQuery = Nothing}
-
-
-ssCorrectedQuery :: Lens' SearchSpelling (Maybe Text)
-ssCorrectedQuery
-  = lens _ssCorrectedQuery
-      (\ s a -> s{_ssCorrectedQuery = a})
-
-ssHTMLCorrectedQuery :: Lens' SearchSpelling (Maybe Text)
-ssHTMLCorrectedQuery
-  = lens _ssHTMLCorrectedQuery
-      (\ s a -> s{_ssHTMLCorrectedQuery = a})
-
-instance FromJSON SearchSpelling where
-        parseJSON
-          = withObject "SearchSpelling"
-              (\ o ->
-                 SearchSpelling' <$>
-                   (o .:? "correctedQuery") <*>
-                     (o .:? "htmlCorrectedQuery"))
-
-instance ToJSON SearchSpelling where
-        toJSON SearchSpelling'{..}
-          = object
-              (catMaybes
-                 [("correctedQuery" .=) <$> _ssCorrectedQuery,
-                  ("htmlCorrectedQuery" .=) <$> _ssHTMLCorrectedQuery])
-
---
--- /See:/ 'resultImage' smart constructor.
-data ResultImage =
-  ResultImage'
-    { _riThumbnailLink   :: !(Maybe Text)
-    , _riHeight          :: !(Maybe (Textual Int32))
-    , _riByteSize        :: !(Maybe (Textual Int32))
-    , _riContextLink     :: !(Maybe Text)
-    , _riThumbnailHeight :: !(Maybe (Textual Int32))
-    , _riWidth           :: !(Maybe (Textual Int32))
-    , _riThumbnailWidth  :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ResultImage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'riThumbnailLink'
---
--- * 'riHeight'
---
--- * 'riByteSize'
---
--- * 'riContextLink'
---
--- * 'riThumbnailHeight'
---
--- * 'riWidth'
---
--- * 'riThumbnailWidth'
-resultImage
-    :: ResultImage
-resultImage =
-  ResultImage'
-    { _riThumbnailLink = Nothing
-    , _riHeight = Nothing
-    , _riByteSize = Nothing
-    , _riContextLink = Nothing
-    , _riThumbnailHeight = Nothing
-    , _riWidth = Nothing
-    , _riThumbnailWidth = Nothing
-    }
-
-
-riThumbnailLink :: Lens' ResultImage (Maybe Text)
-riThumbnailLink
-  = lens _riThumbnailLink
-      (\ s a -> s{_riThumbnailLink = a})
-
-riHeight :: Lens' ResultImage (Maybe Int32)
-riHeight
-  = lens _riHeight (\ s a -> s{_riHeight = a}) .
-      mapping _Coerce
-
-riByteSize :: Lens' ResultImage (Maybe Int32)
-riByteSize
-  = lens _riByteSize (\ s a -> s{_riByteSize = a}) .
-      mapping _Coerce
-
-riContextLink :: Lens' ResultImage (Maybe Text)
-riContextLink
-  = lens _riContextLink
-      (\ s a -> s{_riContextLink = a})
-
-riThumbnailHeight :: Lens' ResultImage (Maybe Int32)
-riThumbnailHeight
-  = lens _riThumbnailHeight
-      (\ s a -> s{_riThumbnailHeight = a})
-      . mapping _Coerce
-
-riWidth :: Lens' ResultImage (Maybe Int32)
-riWidth
-  = lens _riWidth (\ s a -> s{_riWidth = a}) .
-      mapping _Coerce
-
-riThumbnailWidth :: Lens' ResultImage (Maybe Int32)
-riThumbnailWidth
-  = lens _riThumbnailWidth
-      (\ s a -> s{_riThumbnailWidth = a})
-      . mapping _Coerce
-
-instance FromJSON ResultImage where
-        parseJSON
-          = withObject "ResultImage"
-              (\ o ->
-                 ResultImage' <$>
-                   (o .:? "thumbnailLink") <*> (o .:? "height") <*>
-                     (o .:? "byteSize")
-                     <*> (o .:? "contextLink")
-                     <*> (o .:? "thumbnailHeight")
-                     <*> (o .:? "width")
-                     <*> (o .:? "thumbnailWidth"))
-
-instance ToJSON ResultImage where
-        toJSON ResultImage'{..}
-          = object
-              (catMaybes
-                 [("thumbnailLink" .=) <$> _riThumbnailLink,
-                  ("height" .=) <$> _riHeight,
-                  ("byteSize" .=) <$> _riByteSize,
-                  ("contextLink" .=) <$> _riContextLink,
-                  ("thumbnailHeight" .=) <$> _riThumbnailHeight,
-                  ("width" .=) <$> _riWidth,
-                  ("thumbnailWidth" .=) <$> _riThumbnailWidth])
-
---
--- /See:/ 'resultPagemap' smart constructor.
-newtype ResultPagemap =
-  ResultPagemap'
-    { _rpAddtional :: HashMap Text [ResultPagemapAdditionalItem]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ResultPagemap' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rpAddtional'
-resultPagemap
-    :: HashMap Text [ResultPagemapAdditionalItem] -- ^ 'rpAddtional'
-    -> ResultPagemap
-resultPagemap pRpAddtional_ =
-  ResultPagemap' {_rpAddtional = _Coerce # pRpAddtional_}
-
-
-rpAddtional :: Lens' ResultPagemap (HashMap Text [ResultPagemapAdditionalItem])
-rpAddtional
-  = lens _rpAddtional (\ s a -> s{_rpAddtional = a}) .
-      _Coerce
-
-instance FromJSON ResultPagemap where
-        parseJSON
-          = withObject "ResultPagemap"
-              (\ o -> ResultPagemap' <$> (parseJSONObject o))
-
-instance ToJSON ResultPagemap where
-        toJSON = toJSON . _rpAddtional
-
---
--- /See:/ 'result' smart constructor.
-data Result =
-  Result'
-    { _rMime             :: !(Maybe Text)
-    , _rImage            :: !(Maybe ResultImage)
-    , _rPagemap          :: !(Maybe ResultPagemap)
-    , _rDisplayLink      :: !(Maybe Text)
-    , _rFileFormat       :: !(Maybe Text)
-    , _rSnippet          :: !(Maybe Text)
-    , _rKind             :: !Text
-    , _rLink             :: !(Maybe Text)
-    , _rHTMLSnippet      :: !(Maybe Text)
-    , _rHTMLFormattedURL :: !(Maybe Text)
-    , _rCacheId          :: !(Maybe Text)
-    , _rFormattedURL     :: !(Maybe Text)
-    , _rHTMLTitle        :: !(Maybe Text)
-    , _rLabels           :: !(Maybe [ResultLabelsItem])
-    , _rTitle            :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Result' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rMime'
---
--- * 'rImage'
---
--- * 'rPagemap'
---
--- * 'rDisplayLink'
---
--- * 'rFileFormat'
---
--- * 'rSnippet'
---
--- * 'rKind'
---
--- * 'rLink'
---
--- * 'rHTMLSnippet'
---
--- * 'rHTMLFormattedURL'
---
--- * 'rCacheId'
---
--- * 'rFormattedURL'
---
--- * 'rHTMLTitle'
---
--- * 'rLabels'
---
--- * 'rTitle'
-result
-    :: Result
-result =
-  Result'
-    { _rMime = Nothing
-    , _rImage = Nothing
-    , _rPagemap = Nothing
-    , _rDisplayLink = Nothing
-    , _rFileFormat = Nothing
-    , _rSnippet = Nothing
-    , _rKind = "customsearch#result"
-    , _rLink = Nothing
-    , _rHTMLSnippet = Nothing
-    , _rHTMLFormattedURL = Nothing
-    , _rCacheId = Nothing
-    , _rFormattedURL = Nothing
-    , _rHTMLTitle = Nothing
-    , _rLabels = Nothing
-    , _rTitle = Nothing
-    }
-
-
-rMime :: Lens' Result (Maybe Text)
-rMime = lens _rMime (\ s a -> s{_rMime = a})
-
-rImage :: Lens' Result (Maybe ResultImage)
-rImage = lens _rImage (\ s a -> s{_rImage = a})
-
-rPagemap :: Lens' Result (Maybe ResultPagemap)
-rPagemap = lens _rPagemap (\ s a -> s{_rPagemap = a})
-
-rDisplayLink :: Lens' Result (Maybe Text)
-rDisplayLink
-  = lens _rDisplayLink (\ s a -> s{_rDisplayLink = a})
-
-rFileFormat :: Lens' Result (Maybe Text)
-rFileFormat
-  = lens _rFileFormat (\ s a -> s{_rFileFormat = a})
-
-rSnippet :: Lens' Result (Maybe Text)
-rSnippet = lens _rSnippet (\ s a -> s{_rSnippet = a})
-
-rKind :: Lens' Result Text
-rKind = lens _rKind (\ s a -> s{_rKind = a})
-
-rLink :: Lens' Result (Maybe Text)
-rLink = lens _rLink (\ s a -> s{_rLink = a})
-
-rHTMLSnippet :: Lens' Result (Maybe Text)
-rHTMLSnippet
-  = lens _rHTMLSnippet (\ s a -> s{_rHTMLSnippet = a})
-
-rHTMLFormattedURL :: Lens' Result (Maybe Text)
-rHTMLFormattedURL
-  = lens _rHTMLFormattedURL
-      (\ s a -> s{_rHTMLFormattedURL = a})
-
-rCacheId :: Lens' Result (Maybe Text)
-rCacheId = lens _rCacheId (\ s a -> s{_rCacheId = a})
-
-rFormattedURL :: Lens' Result (Maybe Text)
-rFormattedURL
-  = lens _rFormattedURL
-      (\ s a -> s{_rFormattedURL = a})
-
-rHTMLTitle :: Lens' Result (Maybe Text)
-rHTMLTitle
-  = lens _rHTMLTitle (\ s a -> s{_rHTMLTitle = a})
-
-rLabels :: Lens' Result [ResultLabelsItem]
-rLabels
-  = lens _rLabels (\ s a -> s{_rLabels = a}) . _Default
-      . _Coerce
-
-rTitle :: Lens' Result (Maybe Text)
-rTitle = lens _rTitle (\ s a -> s{_rTitle = a})
-
-instance FromJSON Result where
-        parseJSON
-          = withObject "Result"
-              (\ o ->
-                 Result' <$>
-                   (o .:? "mime") <*> (o .:? "image") <*>
-                     (o .:? "pagemap")
-                     <*> (o .:? "displayLink")
-                     <*> (o .:? "fileFormat")
-                     <*> (o .:? "snippet")
-                     <*> (o .:? "kind" .!= "customsearch#result")
-                     <*> (o .:? "link")
-                     <*> (o .:? "htmlSnippet")
-                     <*> (o .:? "htmlFormattedUrl")
-                     <*> (o .:? "cacheId")
-                     <*> (o .:? "formattedUrl")
-                     <*> (o .:? "htmlTitle")
-                     <*> (o .:? "labels" .!= mempty)
-                     <*> (o .:? "title"))
-
-instance ToJSON Result where
-        toJSON Result'{..}
-          = object
-              (catMaybes
-                 [("mime" .=) <$> _rMime, ("image" .=) <$> _rImage,
-                  ("pagemap" .=) <$> _rPagemap,
-                  ("displayLink" .=) <$> _rDisplayLink,
-                  ("fileFormat" .=) <$> _rFileFormat,
-                  ("snippet" .=) <$> _rSnippet,
-                  Just ("kind" .= _rKind), ("link" .=) <$> _rLink,
-                  ("htmlSnippet" .=) <$> _rHTMLSnippet,
-                  ("htmlFormattedUrl" .=) <$> _rHTMLFormattedURL,
-                  ("cacheId" .=) <$> _rCacheId,
-                  ("formattedUrl" .=) <$> _rFormattedURL,
-                  ("htmlTitle" .=) <$> _rHTMLTitle,
-                  ("labels" .=) <$> _rLabels,
-                  ("title" .=) <$> _rTitle])
-
---
--- /See:/ 'resultLabelsItem' smart constructor.
-data ResultLabelsItem =
-  ResultLabelsItem'
-    { _rliName        :: !(Maybe Text)
-    , _rliDisplayName :: !(Maybe Text)
-    , _rliLabelWithOp :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ResultLabelsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rliName'
---
--- * 'rliDisplayName'
---
--- * 'rliLabelWithOp'
-resultLabelsItem
-    :: ResultLabelsItem
-resultLabelsItem =
-  ResultLabelsItem'
-    {_rliName = Nothing, _rliDisplayName = Nothing, _rliLabelWithOp = Nothing}
-
-
-rliName :: Lens' ResultLabelsItem (Maybe Text)
-rliName = lens _rliName (\ s a -> s{_rliName = a})
-
-rliDisplayName :: Lens' ResultLabelsItem (Maybe Text)
-rliDisplayName
-  = lens _rliDisplayName
-      (\ s a -> s{_rliDisplayName = a})
-
-rliLabelWithOp :: Lens' ResultLabelsItem (Maybe Text)
-rliLabelWithOp
-  = lens _rliLabelWithOp
-      (\ s a -> s{_rliLabelWithOp = a})
-
-instance FromJSON ResultLabelsItem where
-        parseJSON
-          = withObject "ResultLabelsItem"
-              (\ o ->
-                 ResultLabelsItem' <$>
-                   (o .:? "name") <*> (o .:? "displayName") <*>
-                     (o .:? "label_with_op"))
-
-instance ToJSON ResultLabelsItem where
-        toJSON ResultLabelsItem'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _rliName,
-                  ("displayName" .=) <$> _rliDisplayName,
-                  ("label_with_op" .=) <$> _rliLabelWithOp])
-
---
--- /See:/ 'searchSearchInformation' smart constructor.
-data SearchSearchInformation =
-  SearchSearchInformation'
-    { _ssiSearchTime            :: !(Maybe (Textual Double))
-    , _ssiFormattedSearchTime   :: !(Maybe Text)
-    , _ssiTotalResults          :: !(Maybe (Textual Int64))
-    , _ssiFormattedTotalResults :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SearchSearchInformation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssiSearchTime'
---
--- * 'ssiFormattedSearchTime'
---
--- * 'ssiTotalResults'
---
--- * 'ssiFormattedTotalResults'
-searchSearchInformation
-    :: SearchSearchInformation
-searchSearchInformation =
-  SearchSearchInformation'
-    { _ssiSearchTime = Nothing
-    , _ssiFormattedSearchTime = Nothing
-    , _ssiTotalResults = Nothing
-    , _ssiFormattedTotalResults = Nothing
-    }
-
-
-ssiSearchTime :: Lens' SearchSearchInformation (Maybe Double)
-ssiSearchTime
-  = lens _ssiSearchTime
-      (\ s a -> s{_ssiSearchTime = a})
-      . mapping _Coerce
-
-ssiFormattedSearchTime :: Lens' SearchSearchInformation (Maybe Text)
-ssiFormattedSearchTime
-  = lens _ssiFormattedSearchTime
-      (\ s a -> s{_ssiFormattedSearchTime = a})
-
-ssiTotalResults :: Lens' SearchSearchInformation (Maybe Int64)
-ssiTotalResults
-  = lens _ssiTotalResults
-      (\ s a -> s{_ssiTotalResults = a})
-      . mapping _Coerce
-
-ssiFormattedTotalResults :: Lens' SearchSearchInformation (Maybe Text)
-ssiFormattedTotalResults
-  = lens _ssiFormattedTotalResults
-      (\ s a -> s{_ssiFormattedTotalResults = a})
-
-instance FromJSON SearchSearchInformation where
-        parseJSON
-          = withObject "SearchSearchInformation"
-              (\ o ->
-                 SearchSearchInformation' <$>
-                   (o .:? "searchTime") <*>
-                     (o .:? "formattedSearchTime")
-                     <*> (o .:? "totalResults")
-                     <*> (o .:? "formattedTotalResults"))
-
-instance ToJSON SearchSearchInformation where
-        toJSON SearchSearchInformation'{..}
-          = object
-              (catMaybes
-                 [("searchTime" .=) <$> _ssiSearchTime,
-                  ("formattedSearchTime" .=) <$>
-                    _ssiFormattedSearchTime,
-                  ("totalResults" .=) <$> _ssiTotalResults,
-                  ("formattedTotalResults" .=) <$>
-                    _ssiFormattedTotalResults])
-
---
--- /See:/ 'query' smart constructor.
-data Query =
-  Query'
-    { _qImgDominantColor       :: !(Maybe Text)
-    , _qOutputEncoding         :: !(Maybe Text)
-    , _qSiteSearchFilter       :: !(Maybe Text)
-    , _qInputEncoding          :: !(Maybe Text)
-    , _qOrTerms                :: !(Maybe Text)
-    , _qSearchTerms            :: !(Maybe Text)
-    , _qStartPage              :: !(Maybe (Textual Int32))
-    , _qRights                 :: !(Maybe Text)
-    , _qCount                  :: !(Maybe (Textual Int32))
-    , _qExcludeTerms           :: !(Maybe Text)
-    , _qFileType               :: !(Maybe Text)
-    , _qSearchType             :: !(Maybe Text)
-    , _qGoogleHost             :: !(Maybe Text)
-    , _qDisableCnTwTranslation :: !(Maybe Text)
-    , _qRelatedSite            :: !(Maybe Text)
-    , _qHl                     :: !(Maybe Text)
-    , _qSort                   :: !(Maybe Text)
-    , _qLanguage               :: !(Maybe Text)
-    , _qSiteSearch             :: !(Maybe Text)
-    , _qFilter                 :: !(Maybe Text)
-    , _qTotalResults           :: !(Maybe (Textual Int64))
-    , _qDateRestrict           :: !(Maybe Text)
-    , _qTitle                  :: !(Maybe Text)
-    , _qLinkSite               :: !(Maybe Text)
-    , _qLowRange               :: !(Maybe Text)
-    , _qImgType                :: !(Maybe Text)
-    , _qGl                     :: !(Maybe Text)
-    , _qCx                     :: !(Maybe Text)
-    , _qImgColorType           :: !(Maybe Text)
-    , _qImgSize                :: !(Maybe Text)
-    , _qExactTerms             :: !(Maybe Text)
-    , _qStartIndex             :: !(Maybe (Textual Int32))
-    , _qCr                     :: !(Maybe Text)
-    , _qSafe                   :: !(Maybe Text)
-    , _qHq                     :: !(Maybe Text)
-    , _qHighRange              :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Query' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'qImgDominantColor'
---
--- * 'qOutputEncoding'
---
--- * 'qSiteSearchFilter'
---
--- * 'qInputEncoding'
---
--- * 'qOrTerms'
---
--- * 'qSearchTerms'
---
--- * 'qStartPage'
---
--- * 'qRights'
---
--- * 'qCount'
---
--- * 'qExcludeTerms'
---
--- * 'qFileType'
---
--- * 'qSearchType'
---
--- * 'qGoogleHost'
---
--- * 'qDisableCnTwTranslation'
---
--- * 'qRelatedSite'
---
--- * 'qHl'
---
--- * 'qSort'
---
--- * 'qLanguage'
---
--- * 'qSiteSearch'
---
--- * 'qFilter'
---
--- * 'qTotalResults'
---
--- * 'qDateRestrict'
---
--- * 'qTitle'
---
--- * 'qLinkSite'
---
--- * 'qLowRange'
---
--- * 'qImgType'
---
--- * 'qGl'
---
--- * 'qCx'
---
--- * 'qImgColorType'
---
--- * 'qImgSize'
---
--- * 'qExactTerms'
---
--- * 'qStartIndex'
---
--- * 'qCr'
---
--- * 'qSafe'
---
--- * 'qHq'
---
--- * 'qHighRange'
-query
-    :: Query
-query =
-  Query'
-    { _qImgDominantColor = Nothing
-    , _qOutputEncoding = Nothing
-    , _qSiteSearchFilter = Nothing
-    , _qInputEncoding = Nothing
-    , _qOrTerms = Nothing
-    , _qSearchTerms = Nothing
-    , _qStartPage = Nothing
-    , _qRights = Nothing
-    , _qCount = Nothing
-    , _qExcludeTerms = Nothing
-    , _qFileType = Nothing
-    , _qSearchType = Nothing
-    , _qGoogleHost = Nothing
-    , _qDisableCnTwTranslation = Nothing
-    , _qRelatedSite = Nothing
-    , _qHl = Nothing
-    , _qSort = Nothing
-    , _qLanguage = Nothing
-    , _qSiteSearch = Nothing
-    , _qFilter = Nothing
-    , _qTotalResults = Nothing
-    , _qDateRestrict = Nothing
-    , _qTitle = Nothing
-    , _qLinkSite = Nothing
-    , _qLowRange = Nothing
-    , _qImgType = Nothing
-    , _qGl = Nothing
-    , _qCx = Nothing
-    , _qImgColorType = Nothing
-    , _qImgSize = Nothing
-    , _qExactTerms = Nothing
-    , _qStartIndex = Nothing
-    , _qCr = Nothing
-    , _qSafe = Nothing
-    , _qHq = Nothing
-    , _qHighRange = Nothing
-    }
-
-
-qImgDominantColor :: Lens' Query (Maybe Text)
-qImgDominantColor
-  = lens _qImgDominantColor
-      (\ s a -> s{_qImgDominantColor = a})
-
-qOutputEncoding :: Lens' Query (Maybe Text)
-qOutputEncoding
-  = lens _qOutputEncoding
-      (\ s a -> s{_qOutputEncoding = a})
-
-qSiteSearchFilter :: Lens' Query (Maybe Text)
-qSiteSearchFilter
-  = lens _qSiteSearchFilter
-      (\ s a -> s{_qSiteSearchFilter = a})
-
-qInputEncoding :: Lens' Query (Maybe Text)
-qInputEncoding
-  = lens _qInputEncoding
-      (\ s a -> s{_qInputEncoding = a})
-
-qOrTerms :: Lens' Query (Maybe Text)
-qOrTerms = lens _qOrTerms (\ s a -> s{_qOrTerms = a})
-
-qSearchTerms :: Lens' Query (Maybe Text)
-qSearchTerms
-  = lens _qSearchTerms (\ s a -> s{_qSearchTerms = a})
-
-qStartPage :: Lens' Query (Maybe Int32)
-qStartPage
-  = lens _qStartPage (\ s a -> s{_qStartPage = a}) .
-      mapping _Coerce
-
-qRights :: Lens' Query (Maybe Text)
-qRights = lens _qRights (\ s a -> s{_qRights = a})
-
-qCount :: Lens' Query (Maybe Int32)
-qCount
-  = lens _qCount (\ s a -> s{_qCount = a}) .
-      mapping _Coerce
-
-qExcludeTerms :: Lens' Query (Maybe Text)
-qExcludeTerms
-  = lens _qExcludeTerms
-      (\ s a -> s{_qExcludeTerms = a})
-
-qFileType :: Lens' Query (Maybe Text)
-qFileType
-  = lens _qFileType (\ s a -> s{_qFileType = a})
-
-qSearchType :: Lens' Query (Maybe Text)
-qSearchType
-  = lens _qSearchType (\ s a -> s{_qSearchType = a})
-
-qGoogleHost :: Lens' Query (Maybe Text)
-qGoogleHost
-  = lens _qGoogleHost (\ s a -> s{_qGoogleHost = a})
-
-qDisableCnTwTranslation :: Lens' Query (Maybe Text)
-qDisableCnTwTranslation
-  = lens _qDisableCnTwTranslation
-      (\ s a -> s{_qDisableCnTwTranslation = a})
-
-qRelatedSite :: Lens' Query (Maybe Text)
-qRelatedSite
-  = lens _qRelatedSite (\ s a -> s{_qRelatedSite = a})
-
-qHl :: Lens' Query (Maybe Text)
-qHl = lens _qHl (\ s a -> s{_qHl = a})
-
-qSort :: Lens' Query (Maybe Text)
-qSort = lens _qSort (\ s a -> s{_qSort = a})
-
-qLanguage :: Lens' Query (Maybe Text)
-qLanguage
-  = lens _qLanguage (\ s a -> s{_qLanguage = a})
-
-qSiteSearch :: Lens' Query (Maybe Text)
-qSiteSearch
-  = lens _qSiteSearch (\ s a -> s{_qSiteSearch = a})
-
-qFilter :: Lens' Query (Maybe Text)
-qFilter = lens _qFilter (\ s a -> s{_qFilter = a})
-
-qTotalResults :: Lens' Query (Maybe Int64)
-qTotalResults
-  = lens _qTotalResults
-      (\ s a -> s{_qTotalResults = a})
-      . mapping _Coerce
-
-qDateRestrict :: Lens' Query (Maybe Text)
-qDateRestrict
-  = lens _qDateRestrict
-      (\ s a -> s{_qDateRestrict = a})
-
-qTitle :: Lens' Query (Maybe Text)
-qTitle = lens _qTitle (\ s a -> s{_qTitle = a})
-
-qLinkSite :: Lens' Query (Maybe Text)
-qLinkSite
-  = lens _qLinkSite (\ s a -> s{_qLinkSite = a})
-
-qLowRange :: Lens' Query (Maybe Text)
-qLowRange
-  = lens _qLowRange (\ s a -> s{_qLowRange = a})
-
-qImgType :: Lens' Query (Maybe Text)
-qImgType = lens _qImgType (\ s a -> s{_qImgType = a})
-
-qGl :: Lens' Query (Maybe Text)
-qGl = lens _qGl (\ s a -> s{_qGl = a})
-
-qCx :: Lens' Query (Maybe Text)
-qCx = lens _qCx (\ s a -> s{_qCx = a})
-
-qImgColorType :: Lens' Query (Maybe Text)
-qImgColorType
-  = lens _qImgColorType
-      (\ s a -> s{_qImgColorType = a})
-
-qImgSize :: Lens' Query (Maybe Text)
-qImgSize = lens _qImgSize (\ s a -> s{_qImgSize = a})
-
-qExactTerms :: Lens' Query (Maybe Text)
-qExactTerms
-  = lens _qExactTerms (\ s a -> s{_qExactTerms = a})
-
-qStartIndex :: Lens' Query (Maybe Int32)
-qStartIndex
-  = lens _qStartIndex (\ s a -> s{_qStartIndex = a}) .
-      mapping _Coerce
-
-qCr :: Lens' Query (Maybe Text)
-qCr = lens _qCr (\ s a -> s{_qCr = a})
-
-qSafe :: Lens' Query (Maybe Text)
-qSafe = lens _qSafe (\ s a -> s{_qSafe = a})
-
-qHq :: Lens' Query (Maybe Text)
-qHq = lens _qHq (\ s a -> s{_qHq = a})
-
-qHighRange :: Lens' Query (Maybe Text)
-qHighRange
-  = lens _qHighRange (\ s a -> s{_qHighRange = a})
-
-instance FromJSON Query where
-        parseJSON
-          = withObject "Query"
-              (\ o ->
-                 Query' <$>
-                   (o .:? "imgDominantColor") <*>
-                     (o .:? "outputEncoding")
-                     <*> (o .:? "siteSearchFilter")
-                     <*> (o .:? "inputEncoding")
-                     <*> (o .:? "orTerms")
-                     <*> (o .:? "searchTerms")
-                     <*> (o .:? "startPage")
-                     <*> (o .:? "rights")
-                     <*> (o .:? "count")
-                     <*> (o .:? "excludeTerms")
-                     <*> (o .:? "fileType")
-                     <*> (o .:? "searchType")
-                     <*> (o .:? "googleHost")
-                     <*> (o .:? "disableCnTwTranslation")
-                     <*> (o .:? "relatedSite")
-                     <*> (o .:? "hl")
-                     <*> (o .:? "sort")
-                     <*> (o .:? "language")
-                     <*> (o .:? "siteSearch")
-                     <*> (o .:? "filter")
-                     <*> (o .:? "totalResults")
-                     <*> (o .:? "dateRestrict")
-                     <*> (o .:? "title")
-                     <*> (o .:? "linkSite")
-                     <*> (o .:? "lowRange")
-                     <*> (o .:? "imgType")
-                     <*> (o .:? "gl")
-                     <*> (o .:? "cx")
-                     <*> (o .:? "imgColorType")
-                     <*> (o .:? "imgSize")
-                     <*> (o .:? "exactTerms")
-                     <*> (o .:? "startIndex")
-                     <*> (o .:? "cr")
-                     <*> (o .:? "safe")
-                     <*> (o .:? "hq")
-                     <*> (o .:? "highRange"))
-
-instance ToJSON Query where
-        toJSON Query'{..}
-          = object
-              (catMaybes
-                 [("imgDominantColor" .=) <$> _qImgDominantColor,
-                  ("outputEncoding" .=) <$> _qOutputEncoding,
-                  ("siteSearchFilter" .=) <$> _qSiteSearchFilter,
-                  ("inputEncoding" .=) <$> _qInputEncoding,
-                  ("orTerms" .=) <$> _qOrTerms,
-                  ("searchTerms" .=) <$> _qSearchTerms,
-                  ("startPage" .=) <$> _qStartPage,
-                  ("rights" .=) <$> _qRights, ("count" .=) <$> _qCount,
-                  ("excludeTerms" .=) <$> _qExcludeTerms,
-                  ("fileType" .=) <$> _qFileType,
-                  ("searchType" .=) <$> _qSearchType,
-                  ("googleHost" .=) <$> _qGoogleHost,
-                  ("disableCnTwTranslation" .=) <$>
-                    _qDisableCnTwTranslation,
-                  ("relatedSite" .=) <$> _qRelatedSite,
-                  ("hl" .=) <$> _qHl, ("sort" .=) <$> _qSort,
-                  ("language" .=) <$> _qLanguage,
-                  ("siteSearch" .=) <$> _qSiteSearch,
-                  ("filter" .=) <$> _qFilter,
-                  ("totalResults" .=) <$> _qTotalResults,
-                  ("dateRestrict" .=) <$> _qDateRestrict,
-                  ("title" .=) <$> _qTitle,
-                  ("linkSite" .=) <$> _qLinkSite,
-                  ("lowRange" .=) <$> _qLowRange,
-                  ("imgType" .=) <$> _qImgType, ("gl" .=) <$> _qGl,
-                  ("cx" .=) <$> _qCx,
-                  ("imgColorType" .=) <$> _qImgColorType,
-                  ("imgSize" .=) <$> _qImgSize,
-                  ("exactTerms" .=) <$> _qExactTerms,
-                  ("startIndex" .=) <$> _qStartIndex,
-                  ("cr" .=) <$> _qCr, ("safe" .=) <$> _qSafe,
-                  ("hq" .=) <$> _qHq,
-                  ("highRange" .=) <$> _qHighRange])
-
---
--- /See:/ 'promotionBodyLinesItem' smart constructor.
-data PromotionBodyLinesItem =
-  PromotionBodyLinesItem'
-    { _pbliLink      :: !(Maybe Text)
-    , _pbliURL       :: !(Maybe Text)
-    , _pbliHTMLTitle :: !(Maybe Text)
-    , _pbliTitle     :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PromotionBodyLinesItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pbliLink'
---
--- * 'pbliURL'
---
--- * 'pbliHTMLTitle'
---
--- * 'pbliTitle'
-promotionBodyLinesItem
-    :: PromotionBodyLinesItem
-promotionBodyLinesItem =
-  PromotionBodyLinesItem'
-    { _pbliLink = Nothing
-    , _pbliURL = Nothing
-    , _pbliHTMLTitle = Nothing
-    , _pbliTitle = Nothing
-    }
-
-
-pbliLink :: Lens' PromotionBodyLinesItem (Maybe Text)
-pbliLink = lens _pbliLink (\ s a -> s{_pbliLink = a})
-
-pbliURL :: Lens' PromotionBodyLinesItem (Maybe Text)
-pbliURL = lens _pbliURL (\ s a -> s{_pbliURL = a})
-
-pbliHTMLTitle :: Lens' PromotionBodyLinesItem (Maybe Text)
-pbliHTMLTitle
-  = lens _pbliHTMLTitle
-      (\ s a -> s{_pbliHTMLTitle = a})
-
-pbliTitle :: Lens' PromotionBodyLinesItem (Maybe Text)
-pbliTitle
-  = lens _pbliTitle (\ s a -> s{_pbliTitle = a})
-
-instance FromJSON PromotionBodyLinesItem where
-        parseJSON
-          = withObject "PromotionBodyLinesItem"
-              (\ o ->
-                 PromotionBodyLinesItem' <$>
-                   (o .:? "link") <*> (o .:? "url") <*>
-                     (o .:? "htmlTitle")
-                     <*> (o .:? "title"))
-
-instance ToJSON PromotionBodyLinesItem where
-        toJSON PromotionBodyLinesItem'{..}
-          = object
-              (catMaybes
-                 [("link" .=) <$> _pbliLink, ("url" .=) <$> _pbliURL,
-                  ("htmlTitle" .=) <$> _pbliHTMLTitle,
-                  ("title" .=) <$> _pbliTitle])
-
---
--- /See:/ 'promotion' smart constructor.
-data Promotion =
-  Promotion'
-    { _pImage       :: !(Maybe PromotionImage)
-    , _pDisplayLink :: !(Maybe Text)
-    , _pBodyLines   :: !(Maybe [PromotionBodyLinesItem])
-    , _pLink        :: !(Maybe Text)
-    , _pHTMLTitle   :: !(Maybe Text)
-    , _pTitle       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Promotion' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pImage'
---
--- * 'pDisplayLink'
---
--- * 'pBodyLines'
---
--- * 'pLink'
---
--- * 'pHTMLTitle'
---
--- * 'pTitle'
-promotion
-    :: Promotion
-promotion =
-  Promotion'
-    { _pImage = Nothing
-    , _pDisplayLink = Nothing
-    , _pBodyLines = Nothing
-    , _pLink = Nothing
-    , _pHTMLTitle = Nothing
-    , _pTitle = Nothing
-    }
-
-
-pImage :: Lens' Promotion (Maybe PromotionImage)
-pImage = lens _pImage (\ s a -> s{_pImage = a})
-
-pDisplayLink :: Lens' Promotion (Maybe Text)
-pDisplayLink
-  = lens _pDisplayLink (\ s a -> s{_pDisplayLink = a})
-
-pBodyLines :: Lens' Promotion [PromotionBodyLinesItem]
-pBodyLines
-  = lens _pBodyLines (\ s a -> s{_pBodyLines = a}) .
-      _Default
-      . _Coerce
-
-pLink :: Lens' Promotion (Maybe Text)
-pLink = lens _pLink (\ s a -> s{_pLink = a})
-
-pHTMLTitle :: Lens' Promotion (Maybe Text)
-pHTMLTitle
-  = lens _pHTMLTitle (\ s a -> s{_pHTMLTitle = a})
-
-pTitle :: Lens' Promotion (Maybe Text)
-pTitle = lens _pTitle (\ s a -> s{_pTitle = a})
-
-instance FromJSON Promotion where
-        parseJSON
-          = withObject "Promotion"
-              (\ o ->
-                 Promotion' <$>
-                   (o .:? "image") <*> (o .:? "displayLink") <*>
-                     (o .:? "bodyLines" .!= mempty)
-                     <*> (o .:? "link")
-                     <*> (o .:? "htmlTitle")
-                     <*> (o .:? "title"))
-
-instance ToJSON Promotion where
-        toJSON Promotion'{..}
-          = object
-              (catMaybes
-                 [("image" .=) <$> _pImage,
-                  ("displayLink" .=) <$> _pDisplayLink,
-                  ("bodyLines" .=) <$> _pBodyLines,
-                  ("link" .=) <$> _pLink,
-                  ("htmlTitle" .=) <$> _pHTMLTitle,
-                  ("title" .=) <$> _pTitle])
-
---
--- /See:/ 'search' smart constructor.
-data Search =
-  Search'
-    { _sQueries           :: !(Maybe SearchQueries)
-    , _sContext           :: !(Maybe Context)
-    , _sKind              :: !Text
-    , _sURL               :: !(Maybe SearchURL)
-    , _sItems             :: !(Maybe [Result])
-    , _sSearchInformation :: !(Maybe SearchSearchInformation)
-    , _sPromotions        :: !(Maybe [Promotion])
-    , _sSpelling          :: !(Maybe SearchSpelling)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Search' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sQueries'
---
--- * 'sContext'
---
--- * 'sKind'
---
--- * 'sURL'
---
--- * 'sItems'
---
--- * 'sSearchInformation'
---
--- * 'sPromotions'
---
--- * 'sSpelling'
-search
-    :: Search
-search =
-  Search'
-    { _sQueries = Nothing
-    , _sContext = Nothing
-    , _sKind = "customsearch#search"
-    , _sURL = Nothing
-    , _sItems = Nothing
-    , _sSearchInformation = Nothing
-    , _sPromotions = Nothing
-    , _sSpelling = Nothing
-    }
-
-
-sQueries :: Lens' Search (Maybe SearchQueries)
-sQueries = lens _sQueries (\ s a -> s{_sQueries = a})
-
-sContext :: Lens' Search (Maybe Context)
-sContext = lens _sContext (\ s a -> s{_sContext = a})
-
-sKind :: Lens' Search Text
-sKind = lens _sKind (\ s a -> s{_sKind = a})
-
-sURL :: Lens' Search (Maybe SearchURL)
-sURL = lens _sURL (\ s a -> s{_sURL = a})
-
-sItems :: Lens' Search [Result]
-sItems
-  = lens _sItems (\ s a -> s{_sItems = a}) . _Default .
-      _Coerce
-
-sSearchInformation :: Lens' Search (Maybe SearchSearchInformation)
-sSearchInformation
-  = lens _sSearchInformation
-      (\ s a -> s{_sSearchInformation = a})
-
-sPromotions :: Lens' Search [Promotion]
-sPromotions
-  = lens _sPromotions (\ s a -> s{_sPromotions = a}) .
-      _Default
-      . _Coerce
-
-sSpelling :: Lens' Search (Maybe SearchSpelling)
-sSpelling
-  = lens _sSpelling (\ s a -> s{_sSpelling = a})
-
-instance FromJSON Search where
-        parseJSON
-          = withObject "Search"
-              (\ o ->
-                 Search' <$>
-                   (o .:? "queries") <*> (o .:? "context") <*>
-                     (o .:? "kind" .!= "customsearch#search")
-                     <*> (o .:? "url")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "searchInformation")
-                     <*> (o .:? "promotions" .!= mempty)
-                     <*> (o .:? "spelling"))
-
-instance ToJSON Search where
-        toJSON Search'{..}
-          = object
-              (catMaybes
-                 [("queries" .=) <$> _sQueries,
-                  ("context" .=) <$> _sContext,
-                  Just ("kind" .= _sKind), ("url" .=) <$> _sURL,
-                  ("items" .=) <$> _sItems,
-                  ("searchInformation" .=) <$> _sSearchInformation,
-                  ("promotions" .=) <$> _sPromotions,
-                  ("spelling" .=) <$> _sSpelling])
-
---
--- /See:/ 'contextFacetsItemItem' smart constructor.
-data ContextFacetsItemItem =
-  ContextFacetsItemItem'
-    { _cfiiAnchor      :: !(Maybe Text)
-    , _cfiiLabelWithOp :: !(Maybe Text)
-    , _cfiiLabel       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ContextFacetsItemItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cfiiAnchor'
---
--- * 'cfiiLabelWithOp'
---
--- * 'cfiiLabel'
-contextFacetsItemItem
-    :: ContextFacetsItemItem
-contextFacetsItemItem =
-  ContextFacetsItemItem'
-    {_cfiiAnchor = Nothing, _cfiiLabelWithOp = Nothing, _cfiiLabel = Nothing}
-
-
-cfiiAnchor :: Lens' ContextFacetsItemItem (Maybe Text)
-cfiiAnchor
-  = lens _cfiiAnchor (\ s a -> s{_cfiiAnchor = a})
-
-cfiiLabelWithOp :: Lens' ContextFacetsItemItem (Maybe Text)
-cfiiLabelWithOp
-  = lens _cfiiLabelWithOp
-      (\ s a -> s{_cfiiLabelWithOp = a})
-
-cfiiLabel :: Lens' ContextFacetsItemItem (Maybe Text)
-cfiiLabel
-  = lens _cfiiLabel (\ s a -> s{_cfiiLabel = a})
-
-instance FromJSON ContextFacetsItemItem where
-        parseJSON
-          = withObject "ContextFacetsItemItem"
-              (\ o ->
-                 ContextFacetsItemItem' <$>
-                   (o .:? "anchor") <*> (o .:? "label_with_op") <*>
-                     (o .:? "label"))
-
-instance ToJSON ContextFacetsItemItem where
-        toJSON ContextFacetsItemItem'{..}
-          = object
-              (catMaybes
-                 [("anchor" .=) <$> _cfiiAnchor,
-                  ("label_with_op" .=) <$> _cfiiLabelWithOp,
-                  ("label" .=) <$> _cfiiLabel])
diff --git a/gen/Network/Google/CustomSearch/Types/Sum.hs b/gen/Network/Google/CustomSearch/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/Google/CustomSearch/Types/Sum.hs
+++ /dev/null
@@ -1,1076 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.CustomSearch.Types.Sum
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.CustomSearch.Types.Sum where
-
-import           Network.Google.Prelude hiding (Bytes)
-
--- | Returns images of a type, which can be one of: clipart, face, lineart,
--- news, and photo.
-data CSEListImgType
-    = CliPart
-      -- ^ @clipart@
-      -- clipart
-    | Face
-      -- ^ @face@
-      -- face
-    | Lineart
-      -- ^ @lineart@
-      -- lineart
-    | News
-      -- ^ @news@
-      -- news
-    | Photo
-      -- ^ @photo@
-      -- photo
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSEListImgType
-
-instance FromHttpApiData CSEListImgType where
-    parseQueryParam = \case
-        "clipart" -> Right CliPart
-        "face" -> Right Face
-        "lineart" -> Right Lineart
-        "news" -> Right News
-        "photo" -> Right Photo
-        x -> Left ("Unable to parse CSEListImgType from: " <> x)
-
-instance ToHttpApiData CSEListImgType where
-    toQueryParam = \case
-        CliPart -> "clipart"
-        Face -> "face"
-        Lineart -> "lineart"
-        News -> "news"
-        Photo -> "photo"
-
-instance FromJSON CSEListImgType where
-    parseJSON = parseJSONText "CSEListImgType"
-
-instance ToJSON CSEListImgType where
-    toJSON = toJSONText
-
--- | Controls whether to include or exclude results from the site named in
--- the as_sitesearch parameter
-data CSEListSiteSearchFilter
-    = E
-      -- ^ @e@
-      -- exclude
-    | I
-      -- ^ @i@
-      -- include
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSEListSiteSearchFilter
-
-instance FromHttpApiData CSEListSiteSearchFilter where
-    parseQueryParam = \case
-        "e" -> Right E
-        "i" -> Right I
-        x -> Left ("Unable to parse CSEListSiteSearchFilter from: " <> x)
-
-instance ToHttpApiData CSEListSiteSearchFilter where
-    toQueryParam = \case
-        E -> "e"
-        I -> "i"
-
-instance FromJSON CSEListSiteSearchFilter where
-    parseJSON = parseJSONText "CSEListSiteSearchFilter"
-
-instance ToJSON CSEListSiteSearchFilter where
-    toJSON = toJSONText
-
--- | Controls turning on or off the duplicate content filter.
-data CSESiterestrictListFilter
-    = CSESLF0
-      -- ^ @0@
-      -- Turns off duplicate content filter.
-    | CSESLF1
-      -- ^ @1@
-      -- Turns on duplicate content filter.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSESiterestrictListFilter
-
-instance FromHttpApiData CSESiterestrictListFilter where
-    parseQueryParam = \case
-        "0" -> Right CSESLF0
-        "1" -> Right CSESLF1
-        x -> Left ("Unable to parse CSESiterestrictListFilter from: " <> x)
-
-instance ToHttpApiData CSESiterestrictListFilter where
-    toQueryParam = \case
-        CSESLF0 -> "0"
-        CSESLF1 -> "1"
-
-instance FromJSON CSESiterestrictListFilter where
-    parseJSON = parseJSONText "CSESiterestrictListFilter"
-
-instance ToJSON CSESiterestrictListFilter where
-    toJSON = toJSONText
-
--- | Returns images of a type, which can be one of: clipart, face, lineart,
--- news, and photo.
-data CSESiterestrictListImgType
-    = CSESLITCliPart
-      -- ^ @clipart@
-      -- clipart
-    | CSESLITFace
-      -- ^ @face@
-      -- face
-    | CSESLITLineart
-      -- ^ @lineart@
-      -- lineart
-    | CSESLITNews
-      -- ^ @news@
-      -- news
-    | CSESLITPhoto
-      -- ^ @photo@
-      -- photo
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSESiterestrictListImgType
-
-instance FromHttpApiData CSESiterestrictListImgType where
-    parseQueryParam = \case
-        "clipart" -> Right CSESLITCliPart
-        "face" -> Right CSESLITFace
-        "lineart" -> Right CSESLITLineart
-        "news" -> Right CSESLITNews
-        "photo" -> Right CSESLITPhoto
-        x -> Left ("Unable to parse CSESiterestrictListImgType from: " <> x)
-
-instance ToHttpApiData CSESiterestrictListImgType where
-    toQueryParam = \case
-        CSESLITCliPart -> "clipart"
-        CSESLITFace -> "face"
-        CSESLITLineart -> "lineart"
-        CSESLITNews -> "news"
-        CSESLITPhoto -> "photo"
-
-instance FromJSON CSESiterestrictListImgType where
-    parseJSON = parseJSONText "CSESiterestrictListImgType"
-
-instance ToJSON CSESiterestrictListImgType where
-    toJSON = toJSONText
-
--- | Returns images of a specific dominant color: red, orange, yellow, green,
--- teal, blue, purple, pink, white, gray, black and brown.
-data CSEListImgDominantColor
-    = Black
-      -- ^ @black@
-      -- black
-    | Blue
-      -- ^ @blue@
-      -- blue
-    | Brown
-      -- ^ @brown@
-      -- brown
-    | Gray
-      -- ^ @gray@
-      -- gray
-    | Green
-      -- ^ @green@
-      -- green
-    | Orange
-      -- ^ @orange@
-      -- orange
-    | Pink
-      -- ^ @pink@
-      -- pink
-    | Purple
-      -- ^ @purple@
-      -- purple
-    | Red
-      -- ^ @red@
-      -- red
-    | Teal
-      -- ^ @teal@
-      -- teal
-    | White
-      -- ^ @white@
-      -- white
-    | Yellow
-      -- ^ @yellow@
-      -- yellow
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSEListImgDominantColor
-
-instance FromHttpApiData CSEListImgDominantColor where
-    parseQueryParam = \case
-        "black" -> Right Black
-        "blue" -> Right Blue
-        "brown" -> Right Brown
-        "gray" -> Right Gray
-        "green" -> Right Green
-        "orange" -> Right Orange
-        "pink" -> Right Pink
-        "purple" -> Right Purple
-        "red" -> Right Red
-        "teal" -> Right Teal
-        "white" -> Right White
-        "yellow" -> Right Yellow
-        x -> Left ("Unable to parse CSEListImgDominantColor from: " <> x)
-
-instance ToHttpApiData CSEListImgDominantColor where
-    toQueryParam = \case
-        Black -> "black"
-        Blue -> "blue"
-        Brown -> "brown"
-        Gray -> "gray"
-        Green -> "green"
-        Orange -> "orange"
-        Pink -> "pink"
-        Purple -> "purple"
-        Red -> "red"
-        Teal -> "teal"
-        White -> "white"
-        Yellow -> "yellow"
-
-instance FromJSON CSEListImgDominantColor where
-    parseJSON = parseJSONText "CSEListImgDominantColor"
-
-instance ToJSON CSEListImgDominantColor where
-    toJSON = toJSONText
-
--- | Search safety level
-data CSEListSafe
-    = Active
-      -- ^ @active@
-      -- Enables safe search filtering.
-    | High
-      -- ^ @high@
-      -- (Deprecated) Same as active.
-    | Medium
-      -- ^ @medium@
-      -- (Deprecated) Same as active.
-    | Off
-      -- ^ @off@
-      -- Disables safe search filtering.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSEListSafe
-
-instance FromHttpApiData CSEListSafe where
-    parseQueryParam = \case
-        "active" -> Right Active
-        "high" -> Right High
-        "medium" -> Right Medium
-        "off" -> Right Off
-        x -> Left ("Unable to parse CSEListSafe from: " <> x)
-
-instance ToHttpApiData CSEListSafe where
-    toQueryParam = \case
-        Active -> "active"
-        High -> "high"
-        Medium -> "medium"
-        Off -> "off"
-
-instance FromJSON CSEListSafe where
-    parseJSON = parseJSONText "CSEListSafe"
-
-instance ToJSON CSEListSafe where
-    toJSON = toJSONText
-
--- | Returns images of a specified size, where size can be one of: icon,
--- small, medium, large, xlarge, xxlarge, and huge.
-data CSESiterestrictListImgSize
-    = CSESLISHuge
-      -- ^ @huge@
-      -- huge
-    | CSESLISIcon
-      -- ^ @icon@
-      -- icon
-    | CSESLISLarge
-      -- ^ @large@
-      -- large
-    | CSESLISMedium
-      -- ^ @medium@
-      -- medium
-    | CSESLISSmall
-      -- ^ @small@
-      -- small
-    | CSESLISXlarge
-      -- ^ @xlarge@
-      -- xlarge
-    | CSESLISXxlarge
-      -- ^ @xxlarge@
-      -- xxlarge
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSESiterestrictListImgSize
-
-instance FromHttpApiData CSESiterestrictListImgSize where
-    parseQueryParam = \case
-        "huge" -> Right CSESLISHuge
-        "icon" -> Right CSESLISIcon
-        "large" -> Right CSESLISLarge
-        "medium" -> Right CSESLISMedium
-        "small" -> Right CSESLISSmall
-        "xlarge" -> Right CSESLISXlarge
-        "xxlarge" -> Right CSESLISXxlarge
-        x -> Left ("Unable to parse CSESiterestrictListImgSize from: " <> x)
-
-instance ToHttpApiData CSESiterestrictListImgSize where
-    toQueryParam = \case
-        CSESLISHuge -> "huge"
-        CSESLISIcon -> "icon"
-        CSESLISLarge -> "large"
-        CSESLISMedium -> "medium"
-        CSESLISSmall -> "small"
-        CSESLISXlarge -> "xlarge"
-        CSESLISXxlarge -> "xxlarge"
-
-instance FromJSON CSESiterestrictListImgSize where
-    parseJSON = parseJSONText "CSESiterestrictListImgSize"
-
-instance ToJSON CSESiterestrictListImgSize where
-    toJSON = toJSONText
-
--- | Returns black and white, grayscale, or color images: mono, gray, and
--- color.
-data CSESiterestrictListImgColorType
-    = CSESLICTColor
-      -- ^ @color@
-      -- color
-    | CSESLICTGray
-      -- ^ @gray@
-      -- gray
-    | CSESLICTMono
-      -- ^ @mono@
-      -- mono
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSESiterestrictListImgColorType
-
-instance FromHttpApiData CSESiterestrictListImgColorType where
-    parseQueryParam = \case
-        "color" -> Right CSESLICTColor
-        "gray" -> Right CSESLICTGray
-        "mono" -> Right CSESLICTMono
-        x -> Left ("Unable to parse CSESiterestrictListImgColorType from: " <> x)
-
-instance ToHttpApiData CSESiterestrictListImgColorType where
-    toQueryParam = \case
-        CSESLICTColor -> "color"
-        CSESLICTGray -> "gray"
-        CSESLICTMono -> "mono"
-
-instance FromJSON CSESiterestrictListImgColorType where
-    parseJSON = parseJSONText "CSESiterestrictListImgColorType"
-
-instance ToJSON CSESiterestrictListImgColorType where
-    toJSON = toJSONText
-
--- | Returns black and white, grayscale, or color images: mono, gray, and
--- color.
-data CSEListImgColorType
-    = CSELICTColor
-      -- ^ @color@
-      -- color
-    | CSELICTGray
-      -- ^ @gray@
-      -- gray
-    | CSELICTMono
-      -- ^ @mono@
-      -- mono
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSEListImgColorType
-
-instance FromHttpApiData CSEListImgColorType where
-    parseQueryParam = \case
-        "color" -> Right CSELICTColor
-        "gray" -> Right CSELICTGray
-        "mono" -> Right CSELICTMono
-        x -> Left ("Unable to parse CSEListImgColorType from: " <> x)
-
-instance ToHttpApiData CSEListImgColorType where
-    toQueryParam = \case
-        CSELICTColor -> "color"
-        CSELICTGray -> "gray"
-        CSELICTMono -> "mono"
-
-instance FromJSON CSEListImgColorType where
-    parseJSON = parseJSONText "CSEListImgColorType"
-
-instance ToJSON CSEListImgColorType where
-    toJSON = toJSONText
-
--- | Search safety level
-data CSESiterestrictListSafe
-    = CSESLSHigh
-      -- ^ @high@
-      -- Enables highest level of safe search filtering.
-    | CSESLSMedium
-      -- ^ @medium@
-      -- Enables moderate safe search filtering.
-    | CSESLSOff
-      -- ^ @off@
-      -- Disables safe search filtering.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSESiterestrictListSafe
-
-instance FromHttpApiData CSESiterestrictListSafe where
-    parseQueryParam = \case
-        "high" -> Right CSESLSHigh
-        "medium" -> Right CSESLSMedium
-        "off" -> Right CSESLSOff
-        x -> Left ("Unable to parse CSESiterestrictListSafe from: " <> x)
-
-instance ToHttpApiData CSESiterestrictListSafe where
-    toQueryParam = \case
-        CSESLSHigh -> "high"
-        CSESLSMedium -> "medium"
-        CSESLSOff -> "off"
-
-instance FromJSON CSESiterestrictListSafe where
-    parseJSON = parseJSONText "CSESiterestrictListSafe"
-
-instance ToJSON CSESiterestrictListSafe where
-    toJSON = toJSONText
-
--- | Returns images of a specific dominant color: red, orange, yellow, green,
--- teal, blue, purple, pink, white, gray, black and brown.
-data CSESiterestrictListImgDominantColor
-    = CSESLIDCBlack
-      -- ^ @black@
-      -- black
-    | CSESLIDCBlue
-      -- ^ @blue@
-      -- blue
-    | CSESLIDCBrown
-      -- ^ @brown@
-      -- brown
-    | CSESLIDCGray
-      -- ^ @gray@
-      -- gray
-    | CSESLIDCGreen
-      -- ^ @green@
-      -- green
-    | CSESLIDCOrange
-      -- ^ @orange@
-      -- orange
-    | CSESLIDCPink
-      -- ^ @pink@
-      -- pink
-    | CSESLIDCPurple
-      -- ^ @purple@
-      -- purple
-    | CSESLIDCRed
-      -- ^ @red@
-      -- red
-    | CSESLIDCTeal
-      -- ^ @teal@
-      -- teal
-    | CSESLIDCWhite
-      -- ^ @white@
-      -- white
-    | CSESLIDCYellow
-      -- ^ @yellow@
-      -- yellow
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSESiterestrictListImgDominantColor
-
-instance FromHttpApiData CSESiterestrictListImgDominantColor where
-    parseQueryParam = \case
-        "black" -> Right CSESLIDCBlack
-        "blue" -> Right CSESLIDCBlue
-        "brown" -> Right CSESLIDCBrown
-        "gray" -> Right CSESLIDCGray
-        "green" -> Right CSESLIDCGreen
-        "orange" -> Right CSESLIDCOrange
-        "pink" -> Right CSESLIDCPink
-        "purple" -> Right CSESLIDCPurple
-        "red" -> Right CSESLIDCRed
-        "teal" -> Right CSESLIDCTeal
-        "white" -> Right CSESLIDCWhite
-        "yellow" -> Right CSESLIDCYellow
-        x -> Left ("Unable to parse CSESiterestrictListImgDominantColor from: " <> x)
-
-instance ToHttpApiData CSESiterestrictListImgDominantColor where
-    toQueryParam = \case
-        CSESLIDCBlack -> "black"
-        CSESLIDCBlue -> "blue"
-        CSESLIDCBrown -> "brown"
-        CSESLIDCGray -> "gray"
-        CSESLIDCGreen -> "green"
-        CSESLIDCOrange -> "orange"
-        CSESLIDCPink -> "pink"
-        CSESLIDCPurple -> "purple"
-        CSESLIDCRed -> "red"
-        CSESLIDCTeal -> "teal"
-        CSESLIDCWhite -> "white"
-        CSESLIDCYellow -> "yellow"
-
-instance FromJSON CSESiterestrictListImgDominantColor where
-    parseJSON = parseJSONText "CSESiterestrictListImgDominantColor"
-
-instance ToJSON CSESiterestrictListImgDominantColor where
-    toJSON = toJSONText
-
--- | Controls turning on or off the duplicate content filter.
-data CSEListFilter
-    = CSELF0
-      -- ^ @0@
-      -- Turns off duplicate content filter.
-    | CSELF1
-      -- ^ @1@
-      -- Turns on duplicate content filter.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSEListFilter
-
-instance FromHttpApiData CSEListFilter where
-    parseQueryParam = \case
-        "0" -> Right CSELF0
-        "1" -> Right CSELF1
-        x -> Left ("Unable to parse CSEListFilter from: " <> x)
-
-instance ToHttpApiData CSEListFilter where
-    toQueryParam = \case
-        CSELF0 -> "0"
-        CSELF1 -> "1"
-
-instance FromJSON CSEListFilter where
-    parseJSON = parseJSONText "CSEListFilter"
-
-instance ToJSON CSEListFilter where
-    toJSON = toJSONText
-
--- | Controls whether to include or exclude results from the site named in
--- the as_sitesearch parameter
-data CSESiterestrictListSiteSearchFilter
-    = CSESLSSFE
-      -- ^ @e@
-      -- exclude
-    | CSESLSSFI
-      -- ^ @i@
-      -- include
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSESiterestrictListSiteSearchFilter
-
-instance FromHttpApiData CSESiterestrictListSiteSearchFilter where
-    parseQueryParam = \case
-        "e" -> Right CSESLSSFE
-        "i" -> Right CSESLSSFI
-        x -> Left ("Unable to parse CSESiterestrictListSiteSearchFilter from: " <> x)
-
-instance ToHttpApiData CSESiterestrictListSiteSearchFilter where
-    toQueryParam = \case
-        CSESLSSFE -> "e"
-        CSESLSSFI -> "i"
-
-instance FromJSON CSESiterestrictListSiteSearchFilter where
-    parseJSON = parseJSONText "CSESiterestrictListSiteSearchFilter"
-
-instance ToJSON CSESiterestrictListSiteSearchFilter where
-    toJSON = toJSONText
-
--- | The language restriction for the search results
-data CSESiterestrictListLr
-    = LangAr
-      -- ^ @lang_ar@
-      -- Arabic
-    | LangBg
-      -- ^ @lang_bg@
-      -- Bulgarian
-    | LangCa
-      -- ^ @lang_ca@
-      -- Catalan
-    | LangCs
-      -- ^ @lang_cs@
-      -- Czech
-    | LangDa
-      -- ^ @lang_da@
-      -- Danish
-    | LangDe
-      -- ^ @lang_de@
-      -- German
-    | LangEl
-      -- ^ @lang_el@
-      -- Greek
-    | LangEn
-      -- ^ @lang_en@
-      -- English
-    | LangEs
-      -- ^ @lang_es@
-      -- Spanish
-    | LangEt
-      -- ^ @lang_et@
-      -- Estonian
-    | LangFi
-      -- ^ @lang_fi@
-      -- Finnish
-    | LangFr
-      -- ^ @lang_fr@
-      -- French
-    | LangHr
-      -- ^ @lang_hr@
-      -- Croatian
-    | LangHu
-      -- ^ @lang_hu@
-      -- Hungarian
-    | LangId
-      -- ^ @lang_id@
-      -- Indonesian
-    | LangIs
-      -- ^ @lang_is@
-      -- Icelandic
-    | LangIt
-      -- ^ @lang_it@
-      -- Italian
-    | LangIw
-      -- ^ @lang_iw@
-      -- Hebrew
-    | LangJa
-      -- ^ @lang_ja@
-      -- Japanese
-    | LangKo
-      -- ^ @lang_ko@
-      -- Korean
-    | LangLT
-      -- ^ @lang_lt@
-      -- Lithuanian
-    | LangLv
-      -- ^ @lang_lv@
-      -- Latvian
-    | LangNl
-      -- ^ @lang_nl@
-      -- Dutch
-    | LangNo
-      -- ^ @lang_no@
-      -- Norwegian
-    | LangPl
-      -- ^ @lang_pl@
-      -- Polish
-    | LangPt
-      -- ^ @lang_pt@
-      -- Portuguese
-    | LangRo
-      -- ^ @lang_ro@
-      -- Romanian
-    | LangRu
-      -- ^ @lang_ru@
-      -- Russian
-    | LangSk
-      -- ^ @lang_sk@
-      -- Slovak
-    | LangSl
-      -- ^ @lang_sl@
-      -- Slovenian
-    | LangSr
-      -- ^ @lang_sr@
-      -- Serbian
-    | LangSv
-      -- ^ @lang_sv@
-      -- Swedish
-    | LangTr
-      -- ^ @lang_tr@
-      -- Turkish
-    | LangZhCn
-      -- ^ @lang_zh-CN@
-      -- Chinese (Simplified)
-    | LangZhTw
-      -- ^ @lang_zh-TW@
-      -- Chinese (Traditional)
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSESiterestrictListLr
-
-instance FromHttpApiData CSESiterestrictListLr where
-    parseQueryParam = \case
-        "lang_ar" -> Right LangAr
-        "lang_bg" -> Right LangBg
-        "lang_ca" -> Right LangCa
-        "lang_cs" -> Right LangCs
-        "lang_da" -> Right LangDa
-        "lang_de" -> Right LangDe
-        "lang_el" -> Right LangEl
-        "lang_en" -> Right LangEn
-        "lang_es" -> Right LangEs
-        "lang_et" -> Right LangEt
-        "lang_fi" -> Right LangFi
-        "lang_fr" -> Right LangFr
-        "lang_hr" -> Right LangHr
-        "lang_hu" -> Right LangHu
-        "lang_id" -> Right LangId
-        "lang_is" -> Right LangIs
-        "lang_it" -> Right LangIt
-        "lang_iw" -> Right LangIw
-        "lang_ja" -> Right LangJa
-        "lang_ko" -> Right LangKo
-        "lang_lt" -> Right LangLT
-        "lang_lv" -> Right LangLv
-        "lang_nl" -> Right LangNl
-        "lang_no" -> Right LangNo
-        "lang_pl" -> Right LangPl
-        "lang_pt" -> Right LangPt
-        "lang_ro" -> Right LangRo
-        "lang_ru" -> Right LangRu
-        "lang_sk" -> Right LangSk
-        "lang_sl" -> Right LangSl
-        "lang_sr" -> Right LangSr
-        "lang_sv" -> Right LangSv
-        "lang_tr" -> Right LangTr
-        "lang_zh-CN" -> Right LangZhCn
-        "lang_zh-TW" -> Right LangZhTw
-        x -> Left ("Unable to parse CSESiterestrictListLr from: " <> x)
-
-instance ToHttpApiData CSESiterestrictListLr where
-    toQueryParam = \case
-        LangAr -> "lang_ar"
-        LangBg -> "lang_bg"
-        LangCa -> "lang_ca"
-        LangCs -> "lang_cs"
-        LangDa -> "lang_da"
-        LangDe -> "lang_de"
-        LangEl -> "lang_el"
-        LangEn -> "lang_en"
-        LangEs -> "lang_es"
-        LangEt -> "lang_et"
-        LangFi -> "lang_fi"
-        LangFr -> "lang_fr"
-        LangHr -> "lang_hr"
-        LangHu -> "lang_hu"
-        LangId -> "lang_id"
-        LangIs -> "lang_is"
-        LangIt -> "lang_it"
-        LangIw -> "lang_iw"
-        LangJa -> "lang_ja"
-        LangKo -> "lang_ko"
-        LangLT -> "lang_lt"
-        LangLv -> "lang_lv"
-        LangNl -> "lang_nl"
-        LangNo -> "lang_no"
-        LangPl -> "lang_pl"
-        LangPt -> "lang_pt"
-        LangRo -> "lang_ro"
-        LangRu -> "lang_ru"
-        LangSk -> "lang_sk"
-        LangSl -> "lang_sl"
-        LangSr -> "lang_sr"
-        LangSv -> "lang_sv"
-        LangTr -> "lang_tr"
-        LangZhCn -> "lang_zh-CN"
-        LangZhTw -> "lang_zh-TW"
-
-instance FromJSON CSESiterestrictListLr where
-    parseJSON = parseJSONText "CSESiterestrictListLr"
-
-instance ToJSON CSESiterestrictListLr where
-    toJSON = toJSONText
-
--- | Specifies the search type: image.
-data CSESiterestrictListSearchType
-    = Image
-      -- ^ @image@
-      -- custom image search
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSESiterestrictListSearchType
-
-instance FromHttpApiData CSESiterestrictListSearchType where
-    parseQueryParam = \case
-        "image" -> Right Image
-        x -> Left ("Unable to parse CSESiterestrictListSearchType from: " <> x)
-
-instance ToHttpApiData CSESiterestrictListSearchType where
-    toQueryParam = \case
-        Image -> "image"
-
-instance FromJSON CSESiterestrictListSearchType where
-    parseJSON = parseJSONText "CSESiterestrictListSearchType"
-
-instance ToJSON CSESiterestrictListSearchType where
-    toJSON = toJSONText
-
--- | The language restriction for the search results
-data CSEListLr
-    = CSELLLangAr
-      -- ^ @lang_ar@
-      -- Arabic
-    | CSELLLangBg
-      -- ^ @lang_bg@
-      -- Bulgarian
-    | CSELLLangCa
-      -- ^ @lang_ca@
-      -- Catalan
-    | CSELLLangCs
-      -- ^ @lang_cs@
-      -- Czech
-    | CSELLLangDa
-      -- ^ @lang_da@
-      -- Danish
-    | CSELLLangDe
-      -- ^ @lang_de@
-      -- German
-    | CSELLLangEl
-      -- ^ @lang_el@
-      -- Greek
-    | CSELLLangEn
-      -- ^ @lang_en@
-      -- English
-    | CSELLLangEs
-      -- ^ @lang_es@
-      -- Spanish
-    | CSELLLangEt
-      -- ^ @lang_et@
-      -- Estonian
-    | CSELLLangFi
-      -- ^ @lang_fi@
-      -- Finnish
-    | CSELLLangFr
-      -- ^ @lang_fr@
-      -- French
-    | CSELLLangHr
-      -- ^ @lang_hr@
-      -- Croatian
-    | CSELLLangHu
-      -- ^ @lang_hu@
-      -- Hungarian
-    | CSELLLangId
-      -- ^ @lang_id@
-      -- Indonesian
-    | CSELLLangIs
-      -- ^ @lang_is@
-      -- Icelandic
-    | CSELLLangIt
-      -- ^ @lang_it@
-      -- Italian
-    | CSELLLangIw
-      -- ^ @lang_iw@
-      -- Hebrew
-    | CSELLLangJa
-      -- ^ @lang_ja@
-      -- Japanese
-    | CSELLLangKo
-      -- ^ @lang_ko@
-      -- Korean
-    | CSELLLangLT
-      -- ^ @lang_lt@
-      -- Lithuanian
-    | CSELLLangLv
-      -- ^ @lang_lv@
-      -- Latvian
-    | CSELLLangNl
-      -- ^ @lang_nl@
-      -- Dutch
-    | CSELLLangNo
-      -- ^ @lang_no@
-      -- Norwegian
-    | CSELLLangPl
-      -- ^ @lang_pl@
-      -- Polish
-    | CSELLLangPt
-      -- ^ @lang_pt@
-      -- Portuguese
-    | CSELLLangRo
-      -- ^ @lang_ro@
-      -- Romanian
-    | CSELLLangRu
-      -- ^ @lang_ru@
-      -- Russian
-    | CSELLLangSk
-      -- ^ @lang_sk@
-      -- Slovak
-    | CSELLLangSl
-      -- ^ @lang_sl@
-      -- Slovenian
-    | CSELLLangSr
-      -- ^ @lang_sr@
-      -- Serbian
-    | CSELLLangSv
-      -- ^ @lang_sv@
-      -- Swedish
-    | CSELLLangTr
-      -- ^ @lang_tr@
-      -- Turkish
-    | CSELLLangZhCn
-      -- ^ @lang_zh-CN@
-      -- Chinese (Simplified)
-    | CSELLLangZhTw
-      -- ^ @lang_zh-TW@
-      -- Chinese (Traditional)
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSEListLr
-
-instance FromHttpApiData CSEListLr where
-    parseQueryParam = \case
-        "lang_ar" -> Right CSELLLangAr
-        "lang_bg" -> Right CSELLLangBg
-        "lang_ca" -> Right CSELLLangCa
-        "lang_cs" -> Right CSELLLangCs
-        "lang_da" -> Right CSELLLangDa
-        "lang_de" -> Right CSELLLangDe
-        "lang_el" -> Right CSELLLangEl
-        "lang_en" -> Right CSELLLangEn
-        "lang_es" -> Right CSELLLangEs
-        "lang_et" -> Right CSELLLangEt
-        "lang_fi" -> Right CSELLLangFi
-        "lang_fr" -> Right CSELLLangFr
-        "lang_hr" -> Right CSELLLangHr
-        "lang_hu" -> Right CSELLLangHu
-        "lang_id" -> Right CSELLLangId
-        "lang_is" -> Right CSELLLangIs
-        "lang_it" -> Right CSELLLangIt
-        "lang_iw" -> Right CSELLLangIw
-        "lang_ja" -> Right CSELLLangJa
-        "lang_ko" -> Right CSELLLangKo
-        "lang_lt" -> Right CSELLLangLT
-        "lang_lv" -> Right CSELLLangLv
-        "lang_nl" -> Right CSELLLangNl
-        "lang_no" -> Right CSELLLangNo
-        "lang_pl" -> Right CSELLLangPl
-        "lang_pt" -> Right CSELLLangPt
-        "lang_ro" -> Right CSELLLangRo
-        "lang_ru" -> Right CSELLLangRu
-        "lang_sk" -> Right CSELLLangSk
-        "lang_sl" -> Right CSELLLangSl
-        "lang_sr" -> Right CSELLLangSr
-        "lang_sv" -> Right CSELLLangSv
-        "lang_tr" -> Right CSELLLangTr
-        "lang_zh-CN" -> Right CSELLLangZhCn
-        "lang_zh-TW" -> Right CSELLLangZhTw
-        x -> Left ("Unable to parse CSEListLr from: " <> x)
-
-instance ToHttpApiData CSEListLr where
-    toQueryParam = \case
-        CSELLLangAr -> "lang_ar"
-        CSELLLangBg -> "lang_bg"
-        CSELLLangCa -> "lang_ca"
-        CSELLLangCs -> "lang_cs"
-        CSELLLangDa -> "lang_da"
-        CSELLLangDe -> "lang_de"
-        CSELLLangEl -> "lang_el"
-        CSELLLangEn -> "lang_en"
-        CSELLLangEs -> "lang_es"
-        CSELLLangEt -> "lang_et"
-        CSELLLangFi -> "lang_fi"
-        CSELLLangFr -> "lang_fr"
-        CSELLLangHr -> "lang_hr"
-        CSELLLangHu -> "lang_hu"
-        CSELLLangId -> "lang_id"
-        CSELLLangIs -> "lang_is"
-        CSELLLangIt -> "lang_it"
-        CSELLLangIw -> "lang_iw"
-        CSELLLangJa -> "lang_ja"
-        CSELLLangKo -> "lang_ko"
-        CSELLLangLT -> "lang_lt"
-        CSELLLangLv -> "lang_lv"
-        CSELLLangNl -> "lang_nl"
-        CSELLLangNo -> "lang_no"
-        CSELLLangPl -> "lang_pl"
-        CSELLLangPt -> "lang_pt"
-        CSELLLangRo -> "lang_ro"
-        CSELLLangRu -> "lang_ru"
-        CSELLLangSk -> "lang_sk"
-        CSELLLangSl -> "lang_sl"
-        CSELLLangSr -> "lang_sr"
-        CSELLLangSv -> "lang_sv"
-        CSELLLangTr -> "lang_tr"
-        CSELLLangZhCn -> "lang_zh-CN"
-        CSELLLangZhTw -> "lang_zh-TW"
-
-instance FromJSON CSEListLr where
-    parseJSON = parseJSONText "CSEListLr"
-
-instance ToJSON CSEListLr where
-    toJSON = toJSONText
-
--- | Specifies the search type: image.
-data CSEListSearchType
-    = CSELSTImage
-      -- ^ @image@
-      -- custom image search
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSEListSearchType
-
-instance FromHttpApiData CSEListSearchType where
-    parseQueryParam = \case
-        "image" -> Right CSELSTImage
-        x -> Left ("Unable to parse CSEListSearchType from: " <> x)
-
-instance ToHttpApiData CSEListSearchType where
-    toQueryParam = \case
-        CSELSTImage -> "image"
-
-instance FromJSON CSEListSearchType where
-    parseJSON = parseJSONText "CSEListSearchType"
-
-instance ToJSON CSEListSearchType where
-    toJSON = toJSONText
-
--- | Returns images of a specified size, where size can be one of: icon,
--- small, medium, large, xlarge, xxlarge, and huge.
-data CSEListImgSize
-    = CSELISHuge
-      -- ^ @huge@
-      -- huge
-    | CSELISIcon
-      -- ^ @icon@
-      -- icon
-    | CSELISLarge
-      -- ^ @large@
-      -- large
-    | CSELISMedium
-      -- ^ @medium@
-      -- medium
-    | CSELISSmall
-      -- ^ @small@
-      -- small
-    | CSELISXlarge
-      -- ^ @xlarge@
-      -- xlarge
-    | CSELISXxlarge
-      -- ^ @xxlarge@
-      -- xxlarge
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable CSEListImgSize
-
-instance FromHttpApiData CSEListImgSize where
-    parseQueryParam = \case
-        "huge" -> Right CSELISHuge
-        "icon" -> Right CSELISIcon
-        "large" -> Right CSELISLarge
-        "medium" -> Right CSELISMedium
-        "small" -> Right CSELISSmall
-        "xlarge" -> Right CSELISXlarge
-        "xxlarge" -> Right CSELISXxlarge
-        x -> Left ("Unable to parse CSEListImgSize from: " <> x)
-
-instance ToHttpApiData CSEListImgSize where
-    toQueryParam = \case
-        CSELISHuge -> "huge"
-        CSELISIcon -> "icon"
-        CSELISLarge -> "large"
-        CSELISMedium -> "medium"
-        CSELISSmall -> "small"
-        CSELISXlarge -> "xlarge"
-        CSELISXxlarge -> "xxlarge"
-
-instance FromJSON CSEListImgSize where
-    parseJSON = parseJSONText "CSEListImgSize"
-
-instance ToJSON CSEListImgSize where
-    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/Search/CSE/List.hs b/gen/Network/Google/Resource/Search/CSE/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Search/CSE/List.hs
+++ /dev/null
@@ -1,496 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Search.CSE.List
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns metadata about the search performed, metadata about the custom
--- search engine used for the search, and the search results.
---
--- /See:/ <https://developers.google.com/custom-search/v1/using_rest CustomSearch API Reference> for @search.cse.list@.
-module Network.Google.Resource.Search.CSE.List
-    (
-    -- * REST Resource
-      CSEListResource
-
-    -- * Creating a Request
-    , cSEList
-    , CSEList
-
-    -- * Request Lenses
-    , cselImgDominantColor
-    , cselSiteSearchFilter
-    , cselC2coff
-    , cselOrTerms
-    , cselStart
-    , cselRights
-    , cselExcludeTerms
-    , cselNum
-    , cselFileType
-    , cselSearchType
-    , cselLr
-    , cselQ
-    , cselGooglehost
-    , cselRelatedSite
-    , cselHl
-    , cselSort
-    , cselSiteSearch
-    , cselFilter
-    , cselDateRestrict
-    , cselLinkSite
-    , cselLowRange
-    , cselImgType
-    , cselGl
-    , cselCx
-    , cselImgColorType
-    , cselImgSize
-    , cselExactTerms
-    , cselCr
-    , cselSafe
-    , cselHq
-    , cselHighRange
-    ) where
-
-import           Network.Google.CustomSearch.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @search.cse.list@ method which the
--- 'CSEList' request conforms to.
-type CSEListResource =
-     "customsearch" :>
-       "v1" :>
-         QueryParam "q" Text :>
-           QueryParam "imgDominantColor" CSEListImgDominantColor
-             :>
-             QueryParam "siteSearchFilter" CSEListSiteSearchFilter
-               :>
-               QueryParam "c2coff" Text :>
-                 QueryParam "orTerms" Text :>
-                   QueryParam "start" (Textual Word32) :>
-                     QueryParam "rights" Text :>
-                       QueryParam "excludeTerms" Text :>
-                         QueryParam "num" (Textual Word32) :>
-                           QueryParam "fileType" Text :>
-                             QueryParam "searchType" CSEListSearchType :>
-                               QueryParam "lr" CSEListLr :>
-                                 QueryParam "googlehost" Text :>
-                                   QueryParam "relatedSite" Text :>
-                                     QueryParam "hl" Text :>
-                                       QueryParam "sort" Text :>
-                                         QueryParam "siteSearch" Text :>
-                                           QueryParam "filter" CSEListFilter :>
-                                             QueryParam "dateRestrict" Text :>
-                                               QueryParam "linkSite" Text :>
-                                                 QueryParam "lowRange" Text :>
-                                                   QueryParam "imgType"
-                                                     CSEListImgType
-                                                     :>
-                                                     QueryParam "gl" Text :>
-                                                       QueryParam "cx" Text :>
-                                                         QueryParam
-                                                           "imgColorType"
-                                                           CSEListImgColorType
-                                                           :>
-                                                           QueryParam "imgSize"
-                                                             CSEListImgSize
-                                                             :>
-                                                             QueryParam
-                                                               "exactTerms"
-                                                               Text
-                                                               :>
-                                                               QueryParam "cr"
-                                                                 Text
-                                                                 :>
-                                                                 QueryParam
-                                                                   "safe"
-                                                                   CSEListSafe
-                                                                   :>
-                                                                   QueryParam
-                                                                     "hq"
-                                                                     Text
-                                                                     :>
-                                                                     QueryParam
-                                                                       "highRange"
-                                                                       Text
-                                                                       :>
-                                                                       QueryParam
-                                                                         "alt"
-                                                                         AltJSON
-                                                                         :>
-                                                                         Get
-                                                                           '[JSON]
-                                                                           Search
-
--- | Returns metadata about the search performed, metadata about the custom
--- search engine used for the search, and the search results.
---
--- /See:/ 'cSEList' smart constructor.
-data CSEList =
-  CSEList'
-    { _cselImgDominantColor :: !(Maybe CSEListImgDominantColor)
-    , _cselSiteSearchFilter :: !(Maybe CSEListSiteSearchFilter)
-    , _cselC2coff           :: !(Maybe Text)
-    , _cselOrTerms          :: !(Maybe Text)
-    , _cselStart            :: !(Maybe (Textual Word32))
-    , _cselRights           :: !(Maybe Text)
-    , _cselExcludeTerms     :: !(Maybe Text)
-    , _cselNum              :: !(Textual Word32)
-    , _cselFileType         :: !(Maybe Text)
-    , _cselSearchType       :: !(Maybe CSEListSearchType)
-    , _cselLr               :: !(Maybe CSEListLr)
-    , _cselQ                :: !Text
-    , _cselGooglehost       :: !(Maybe Text)
-    , _cselRelatedSite      :: !(Maybe Text)
-    , _cselHl               :: !(Maybe Text)
-    , _cselSort             :: !(Maybe Text)
-    , _cselSiteSearch       :: !(Maybe Text)
-    , _cselFilter           :: !(Maybe CSEListFilter)
-    , _cselDateRestrict     :: !(Maybe Text)
-    , _cselLinkSite         :: !(Maybe Text)
-    , _cselLowRange         :: !(Maybe Text)
-    , _cselImgType          :: !(Maybe CSEListImgType)
-    , _cselGl               :: !(Maybe Text)
-    , _cselCx               :: !(Maybe Text)
-    , _cselImgColorType     :: !(Maybe CSEListImgColorType)
-    , _cselImgSize          :: !(Maybe CSEListImgSize)
-    , _cselExactTerms       :: !(Maybe Text)
-    , _cselCr               :: !(Maybe Text)
-    , _cselSafe             :: !CSEListSafe
-    , _cselHq               :: !(Maybe Text)
-    , _cselHighRange        :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CSEList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cselImgDominantColor'
---
--- * 'cselSiteSearchFilter'
---
--- * 'cselC2coff'
---
--- * 'cselOrTerms'
---
--- * 'cselStart'
---
--- * 'cselRights'
---
--- * 'cselExcludeTerms'
---
--- * 'cselNum'
---
--- * 'cselFileType'
---
--- * 'cselSearchType'
---
--- * 'cselLr'
---
--- * 'cselQ'
---
--- * 'cselGooglehost'
---
--- * 'cselRelatedSite'
---
--- * 'cselHl'
---
--- * 'cselSort'
---
--- * 'cselSiteSearch'
---
--- * 'cselFilter'
---
--- * 'cselDateRestrict'
---
--- * 'cselLinkSite'
---
--- * 'cselLowRange'
---
--- * 'cselImgType'
---
--- * 'cselGl'
---
--- * 'cselCx'
---
--- * 'cselImgColorType'
---
--- * 'cselImgSize'
---
--- * 'cselExactTerms'
---
--- * 'cselCr'
---
--- * 'cselSafe'
---
--- * 'cselHq'
---
--- * 'cselHighRange'
-cSEList
-    :: Text -- ^ 'cselQ'
-    -> CSEList
-cSEList pCselQ_ =
-  CSEList'
-    { _cselImgDominantColor = Nothing
-    , _cselSiteSearchFilter = Nothing
-    , _cselC2coff = Nothing
-    , _cselOrTerms = Nothing
-    , _cselStart = Nothing
-    , _cselRights = Nothing
-    , _cselExcludeTerms = Nothing
-    , _cselNum = 10
-    , _cselFileType = Nothing
-    , _cselSearchType = Nothing
-    , _cselLr = Nothing
-    , _cselQ = pCselQ_
-    , _cselGooglehost = Nothing
-    , _cselRelatedSite = Nothing
-    , _cselHl = Nothing
-    , _cselSort = Nothing
-    , _cselSiteSearch = Nothing
-    , _cselFilter = Nothing
-    , _cselDateRestrict = Nothing
-    , _cselLinkSite = Nothing
-    , _cselLowRange = Nothing
-    , _cselImgType = Nothing
-    , _cselGl = Nothing
-    , _cselCx = Nothing
-    , _cselImgColorType = Nothing
-    , _cselImgSize = Nothing
-    , _cselExactTerms = Nothing
-    , _cselCr = Nothing
-    , _cselSafe = Off
-    , _cselHq = Nothing
-    , _cselHighRange = Nothing
-    }
-
-
--- | Returns images of a specific dominant color: red, orange, yellow, green,
--- teal, blue, purple, pink, white, gray, black and brown.
-cselImgDominantColor :: Lens' CSEList (Maybe CSEListImgDominantColor)
-cselImgDominantColor
-  = lens _cselImgDominantColor
-      (\ s a -> s{_cselImgDominantColor = a})
-
--- | Controls whether to include or exclude results from the site named in
--- the as_sitesearch parameter
-cselSiteSearchFilter :: Lens' CSEList (Maybe CSEListSiteSearchFilter)
-cselSiteSearchFilter
-  = lens _cselSiteSearchFilter
-      (\ s a -> s{_cselSiteSearchFilter = a})
-
--- | Turns off the translation between zh-CN and zh-TW.
-cselC2coff :: Lens' CSEList (Maybe Text)
-cselC2coff
-  = lens _cselC2coff (\ s a -> s{_cselC2coff = a})
-
--- | Provides additional search terms to check for in a document, where each
--- document in the search results must contain at least one of the
--- additional search terms
-cselOrTerms :: Lens' CSEList (Maybe Text)
-cselOrTerms
-  = lens _cselOrTerms (\ s a -> s{_cselOrTerms = a})
-
--- | The index of the first result to return
-cselStart :: Lens' CSEList (Maybe Word32)
-cselStart
-  = lens _cselStart (\ s a -> s{_cselStart = a}) .
-      mapping _Coerce
-
--- | Filters based on licensing. Supported values include: cc_publicdomain,
--- cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and
--- combinations of these.
-cselRights :: Lens' CSEList (Maybe Text)
-cselRights
-  = lens _cselRights (\ s a -> s{_cselRights = a})
-
--- | Identifies a word or phrase that should not appear in any documents in
--- the search results
-cselExcludeTerms :: Lens' CSEList (Maybe Text)
-cselExcludeTerms
-  = lens _cselExcludeTerms
-      (\ s a -> s{_cselExcludeTerms = a})
-
--- | Number of search results to return
-cselNum :: Lens' CSEList Word32
-cselNum
-  = lens _cselNum (\ s a -> s{_cselNum = a}) . _Coerce
-
--- | Returns images of a specified type. Some of the allowed values are: bmp,
--- gif, png, jpg, svg, pdf, ...
-cselFileType :: Lens' CSEList (Maybe Text)
-cselFileType
-  = lens _cselFileType (\ s a -> s{_cselFileType = a})
-
--- | Specifies the search type: image.
-cselSearchType :: Lens' CSEList (Maybe CSEListSearchType)
-cselSearchType
-  = lens _cselSearchType
-      (\ s a -> s{_cselSearchType = a})
-
--- | The language restriction for the search results
-cselLr :: Lens' CSEList (Maybe CSEListLr)
-cselLr = lens _cselLr (\ s a -> s{_cselLr = a})
-
--- | Query
-cselQ :: Lens' CSEList Text
-cselQ = lens _cselQ (\ s a -> s{_cselQ = a})
-
--- | The local Google domain to use to perform the search.
-cselGooglehost :: Lens' CSEList (Maybe Text)
-cselGooglehost
-  = lens _cselGooglehost
-      (\ s a -> s{_cselGooglehost = a})
-
--- | Specifies that all search results should be pages that are related to
--- the specified URL
-cselRelatedSite :: Lens' CSEList (Maybe Text)
-cselRelatedSite
-  = lens _cselRelatedSite
-      (\ s a -> s{_cselRelatedSite = a})
-
--- | Sets the user interface language.
-cselHl :: Lens' CSEList (Maybe Text)
-cselHl = lens _cselHl (\ s a -> s{_cselHl = a})
-
--- | The sort expression to apply to the results
-cselSort :: Lens' CSEList (Maybe Text)
-cselSort = lens _cselSort (\ s a -> s{_cselSort = a})
-
--- | Specifies all search results should be pages from a given site
-cselSiteSearch :: Lens' CSEList (Maybe Text)
-cselSiteSearch
-  = lens _cselSiteSearch
-      (\ s a -> s{_cselSiteSearch = a})
-
--- | Controls turning on or off the duplicate content filter.
-cselFilter :: Lens' CSEList (Maybe CSEListFilter)
-cselFilter
-  = lens _cselFilter (\ s a -> s{_cselFilter = a})
-
--- | Specifies all search results are from a time period
-cselDateRestrict :: Lens' CSEList (Maybe Text)
-cselDateRestrict
-  = lens _cselDateRestrict
-      (\ s a -> s{_cselDateRestrict = a})
-
--- | Specifies that all search results should contain a link to a particular
--- URL
-cselLinkSite :: Lens' CSEList (Maybe Text)
-cselLinkSite
-  = lens _cselLinkSite (\ s a -> s{_cselLinkSite = a})
-
--- | Creates a range in form as_nlo value..as_nhi value and attempts to
--- append it to query
-cselLowRange :: Lens' CSEList (Maybe Text)
-cselLowRange
-  = lens _cselLowRange (\ s a -> s{_cselLowRange = a})
-
--- | Returns images of a type, which can be one of: clipart, face, lineart,
--- news, and photo.
-cselImgType :: Lens' CSEList (Maybe CSEListImgType)
-cselImgType
-  = lens _cselImgType (\ s a -> s{_cselImgType = a})
-
--- | Geolocation of end user.
-cselGl :: Lens' CSEList (Maybe Text)
-cselGl = lens _cselGl (\ s a -> s{_cselGl = a})
-
--- | The custom search engine ID to scope this search query
-cselCx :: Lens' CSEList (Maybe Text)
-cselCx = lens _cselCx (\ s a -> s{_cselCx = a})
-
--- | Returns black and white, grayscale, or color images: mono, gray, and
--- color.
-cselImgColorType :: Lens' CSEList (Maybe CSEListImgColorType)
-cselImgColorType
-  = lens _cselImgColorType
-      (\ s a -> s{_cselImgColorType = a})
-
--- | Returns images of a specified size, where size can be one of: icon,
--- small, medium, large, xlarge, xxlarge, and huge.
-cselImgSize :: Lens' CSEList (Maybe CSEListImgSize)
-cselImgSize
-  = lens _cselImgSize (\ s a -> s{_cselImgSize = a})
-
--- | Identifies a phrase that all documents in the search results must
--- contain
-cselExactTerms :: Lens' CSEList (Maybe Text)
-cselExactTerms
-  = lens _cselExactTerms
-      (\ s a -> s{_cselExactTerms = a})
-
--- | Country restrict(s).
-cselCr :: Lens' CSEList (Maybe Text)
-cselCr = lens _cselCr (\ s a -> s{_cselCr = a})
-
--- | Search safety level
-cselSafe :: Lens' CSEList CSEListSafe
-cselSafe = lens _cselSafe (\ s a -> s{_cselSafe = a})
-
--- | Appends the extra query terms to the query.
-cselHq :: Lens' CSEList (Maybe Text)
-cselHq = lens _cselHq (\ s a -> s{_cselHq = a})
-
--- | Creates a range in form as_nlo value..as_nhi value and attempts to
--- append it to query
-cselHighRange :: Lens' CSEList (Maybe Text)
-cselHighRange
-  = lens _cselHighRange
-      (\ s a -> s{_cselHighRange = a})
-
-instance GoogleRequest CSEList where
-        type Rs CSEList = Search
-        type Scopes CSEList = '[]
-        requestClient CSEList'{..}
-          = go (Just _cselQ) _cselImgDominantColor
-              _cselSiteSearchFilter
-              _cselC2coff
-              _cselOrTerms
-              _cselStart
-              _cselRights
-              _cselExcludeTerms
-              (Just _cselNum)
-              _cselFileType
-              _cselSearchType
-              _cselLr
-              _cselGooglehost
-              _cselRelatedSite
-              _cselHl
-              _cselSort
-              _cselSiteSearch
-              _cselFilter
-              _cselDateRestrict
-              _cselLinkSite
-              _cselLowRange
-              _cselImgType
-              _cselGl
-              _cselCx
-              _cselImgColorType
-              _cselImgSize
-              _cselExactTerms
-              _cselCr
-              (Just _cselSafe)
-              _cselHq
-              _cselHighRange
-              (Just AltJSON)
-              customSearchService
-          where go
-                  = buildClient (Proxy :: Proxy CSEListResource) mempty
diff --git a/gen/Network/Google/Resource/Search/CSE/Siterestrict/List.hs b/gen/Network/Google/Resource/Search/CSE/Siterestrict/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Search/CSE/Siterestrict/List.hs
+++ /dev/null
@@ -1,514 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Search.CSE.Siterestrict.List
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns metadata about the search performed, metadata about the custom
--- search engine used for the search, and the search results. Uses a small
--- set of url patterns.
---
--- /See:/ <https://developers.google.com/custom-search/v1/using_rest CustomSearch API Reference> for @search.cse.siterestrict.list@.
-module Network.Google.Resource.Search.CSE.Siterestrict.List
-    (
-    -- * REST Resource
-      CSESiterestrictListResource
-
-    -- * Creating a Request
-    , cSESiterestrictList
-    , CSESiterestrictList
-
-    -- * Request Lenses
-    , cseslImgDominantColor
-    , cseslSiteSearchFilter
-    , cseslC2coff
-    , cseslOrTerms
-    , cseslStart
-    , cseslRights
-    , cseslExcludeTerms
-    , cseslNum
-    , cseslFileType
-    , cseslSearchType
-    , cseslLr
-    , cseslQ
-    , cseslGooglehost
-    , cseslRelatedSite
-    , cseslHl
-    , cseslSort
-    , cseslSiteSearch
-    , cseslFilter
-    , cseslDateRestrict
-    , cseslLinkSite
-    , cseslLowRange
-    , cseslImgType
-    , cseslGl
-    , cseslCx
-    , cseslImgColorType
-    , cseslImgSize
-    , cseslExactTerms
-    , cseslCr
-    , cseslSafe
-    , cseslHq
-    , cseslHighRange
-    ) where
-
-import           Network.Google.CustomSearch.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @search.cse.siterestrict.list@ method which the
--- 'CSESiterestrictList' request conforms to.
-type CSESiterestrictListResource =
-     "customsearch" :>
-       "v1" :>
-         "siterestrict" :>
-           QueryParam "q" Text :>
-             QueryParam "imgDominantColor"
-               CSESiterestrictListImgDominantColor
-               :>
-               QueryParam "siteSearchFilter"
-                 CSESiterestrictListSiteSearchFilter
-                 :>
-                 QueryParam "c2coff" Text :>
-                   QueryParam "orTerms" Text :>
-                     QueryParam "start" (Textual Word32) :>
-                       QueryParam "rights" Text :>
-                         QueryParam "excludeTerms" Text :>
-                           QueryParam "num" (Textual Word32) :>
-                             QueryParam "fileType" Text :>
-                               QueryParam "searchType"
-                                 CSESiterestrictListSearchType
-                                 :>
-                                 QueryParam "lr" CSESiterestrictListLr :>
-                                   QueryParam "googlehost" Text :>
-                                     QueryParam "relatedSite" Text :>
-                                       QueryParam "hl" Text :>
-                                         QueryParam "sort" Text :>
-                                           QueryParam "siteSearch" Text :>
-                                             QueryParam "filter"
-                                               CSESiterestrictListFilter
-                                               :>
-                                               QueryParam "dateRestrict" Text :>
-                                                 QueryParam "linkSite" Text :>
-                                                   QueryParam "lowRange" Text :>
-                                                     QueryParam "imgType"
-                                                       CSESiterestrictListImgType
-                                                       :>
-                                                       QueryParam "gl" Text :>
-                                                         QueryParam "cx" Text :>
-                                                           QueryParam
-                                                             "imgColorType"
-                                                             CSESiterestrictListImgColorType
-                                                             :>
-                                                             QueryParam
-                                                               "imgSize"
-                                                               CSESiterestrictListImgSize
-                                                               :>
-                                                               QueryParam
-                                                                 "exactTerms"
-                                                                 Text
-                                                                 :>
-                                                                 QueryParam "cr"
-                                                                   Text
-                                                                   :>
-                                                                   QueryParam
-                                                                     "safe"
-                                                                     CSESiterestrictListSafe
-                                                                     :>
-                                                                     QueryParam
-                                                                       "hq"
-                                                                       Text
-                                                                       :>
-                                                                       QueryParam
-                                                                         "highRange"
-                                                                         Text
-                                                                         :>
-                                                                         QueryParam
-                                                                           "alt"
-                                                                           AltJSON
-                                                                           :>
-                                                                           Get
-                                                                             '[JSON]
-                                                                             Search
-
--- | Returns metadata about the search performed, metadata about the custom
--- search engine used for the search, and the search results. Uses a small
--- set of url patterns.
---
--- /See:/ 'cSESiterestrictList' smart constructor.
-data CSESiterestrictList =
-  CSESiterestrictList'
-    { _cseslImgDominantColor :: !(Maybe CSESiterestrictListImgDominantColor)
-    , _cseslSiteSearchFilter :: !(Maybe CSESiterestrictListSiteSearchFilter)
-    , _cseslC2coff           :: !(Maybe Text)
-    , _cseslOrTerms          :: !(Maybe Text)
-    , _cseslStart            :: !(Maybe (Textual Word32))
-    , _cseslRights           :: !(Maybe Text)
-    , _cseslExcludeTerms     :: !(Maybe Text)
-    , _cseslNum              :: !(Textual Word32)
-    , _cseslFileType         :: !(Maybe Text)
-    , _cseslSearchType       :: !(Maybe CSESiterestrictListSearchType)
-    , _cseslLr               :: !(Maybe CSESiterestrictListLr)
-    , _cseslQ                :: !Text
-    , _cseslGooglehost       :: !(Maybe Text)
-    , _cseslRelatedSite      :: !(Maybe Text)
-    , _cseslHl               :: !(Maybe Text)
-    , _cseslSort             :: !(Maybe Text)
-    , _cseslSiteSearch       :: !(Maybe Text)
-    , _cseslFilter           :: !(Maybe CSESiterestrictListFilter)
-    , _cseslDateRestrict     :: !(Maybe Text)
-    , _cseslLinkSite         :: !(Maybe Text)
-    , _cseslLowRange         :: !(Maybe Text)
-    , _cseslImgType          :: !(Maybe CSESiterestrictListImgType)
-    , _cseslGl               :: !(Maybe Text)
-    , _cseslCx               :: !(Maybe Text)
-    , _cseslImgColorType     :: !(Maybe CSESiterestrictListImgColorType)
-    , _cseslImgSize          :: !(Maybe CSESiterestrictListImgSize)
-    , _cseslExactTerms       :: !(Maybe Text)
-    , _cseslCr               :: !(Maybe Text)
-    , _cseslSafe             :: !CSESiterestrictListSafe
-    , _cseslHq               :: !(Maybe Text)
-    , _cseslHighRange        :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CSESiterestrictList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cseslImgDominantColor'
---
--- * 'cseslSiteSearchFilter'
---
--- * 'cseslC2coff'
---
--- * 'cseslOrTerms'
---
--- * 'cseslStart'
---
--- * 'cseslRights'
---
--- * 'cseslExcludeTerms'
---
--- * 'cseslNum'
---
--- * 'cseslFileType'
---
--- * 'cseslSearchType'
---
--- * 'cseslLr'
---
--- * 'cseslQ'
---
--- * 'cseslGooglehost'
---
--- * 'cseslRelatedSite'
---
--- * 'cseslHl'
---
--- * 'cseslSort'
---
--- * 'cseslSiteSearch'
---
--- * 'cseslFilter'
---
--- * 'cseslDateRestrict'
---
--- * 'cseslLinkSite'
---
--- * 'cseslLowRange'
---
--- * 'cseslImgType'
---
--- * 'cseslGl'
---
--- * 'cseslCx'
---
--- * 'cseslImgColorType'
---
--- * 'cseslImgSize'
---
--- * 'cseslExactTerms'
---
--- * 'cseslCr'
---
--- * 'cseslSafe'
---
--- * 'cseslHq'
---
--- * 'cseslHighRange'
-cSESiterestrictList
-    :: Text -- ^ 'cseslQ'
-    -> CSESiterestrictList
-cSESiterestrictList pCseslQ_ =
-  CSESiterestrictList'
-    { _cseslImgDominantColor = Nothing
-    , _cseslSiteSearchFilter = Nothing
-    , _cseslC2coff = Nothing
-    , _cseslOrTerms = Nothing
-    , _cseslStart = Nothing
-    , _cseslRights = Nothing
-    , _cseslExcludeTerms = Nothing
-    , _cseslNum = 10
-    , _cseslFileType = Nothing
-    , _cseslSearchType = Nothing
-    , _cseslLr = Nothing
-    , _cseslQ = pCseslQ_
-    , _cseslGooglehost = Nothing
-    , _cseslRelatedSite = Nothing
-    , _cseslHl = Nothing
-    , _cseslSort = Nothing
-    , _cseslSiteSearch = Nothing
-    , _cseslFilter = Nothing
-    , _cseslDateRestrict = Nothing
-    , _cseslLinkSite = Nothing
-    , _cseslLowRange = Nothing
-    , _cseslImgType = Nothing
-    , _cseslGl = Nothing
-    , _cseslCx = Nothing
-    , _cseslImgColorType = Nothing
-    , _cseslImgSize = Nothing
-    , _cseslExactTerms = Nothing
-    , _cseslCr = Nothing
-    , _cseslSafe = CSESLSOff
-    , _cseslHq = Nothing
-    , _cseslHighRange = Nothing
-    }
-
-
--- | Returns images of a specific dominant color: red, orange, yellow, green,
--- teal, blue, purple, pink, white, gray, black and brown.
-cseslImgDominantColor :: Lens' CSESiterestrictList (Maybe CSESiterestrictListImgDominantColor)
-cseslImgDominantColor
-  = lens _cseslImgDominantColor
-      (\ s a -> s{_cseslImgDominantColor = a})
-
--- | Controls whether to include or exclude results from the site named in
--- the as_sitesearch parameter
-cseslSiteSearchFilter :: Lens' CSESiterestrictList (Maybe CSESiterestrictListSiteSearchFilter)
-cseslSiteSearchFilter
-  = lens _cseslSiteSearchFilter
-      (\ s a -> s{_cseslSiteSearchFilter = a})
-
--- | Turns off the translation between zh-CN and zh-TW.
-cseslC2coff :: Lens' CSESiterestrictList (Maybe Text)
-cseslC2coff
-  = lens _cseslC2coff (\ s a -> s{_cseslC2coff = a})
-
--- | Provides additional search terms to check for in a document, where each
--- document in the search results must contain at least one of the
--- additional search terms
-cseslOrTerms :: Lens' CSESiterestrictList (Maybe Text)
-cseslOrTerms
-  = lens _cseslOrTerms (\ s a -> s{_cseslOrTerms = a})
-
--- | The index of the first result to return
-cseslStart :: Lens' CSESiterestrictList (Maybe Word32)
-cseslStart
-  = lens _cseslStart (\ s a -> s{_cseslStart = a}) .
-      mapping _Coerce
-
--- | Filters based on licensing. Supported values include: cc_publicdomain,
--- cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and
--- combinations of these.
-cseslRights :: Lens' CSESiterestrictList (Maybe Text)
-cseslRights
-  = lens _cseslRights (\ s a -> s{_cseslRights = a})
-
--- | Identifies a word or phrase that should not appear in any documents in
--- the search results
-cseslExcludeTerms :: Lens' CSESiterestrictList (Maybe Text)
-cseslExcludeTerms
-  = lens _cseslExcludeTerms
-      (\ s a -> s{_cseslExcludeTerms = a})
-
--- | Number of search results to return
-cseslNum :: Lens' CSESiterestrictList Word32
-cseslNum
-  = lens _cseslNum (\ s a -> s{_cseslNum = a}) .
-      _Coerce
-
--- | Returns images of a specified type. Some of the allowed values are: bmp,
--- gif, png, jpg, svg, pdf, ...
-cseslFileType :: Lens' CSESiterestrictList (Maybe Text)
-cseslFileType
-  = lens _cseslFileType
-      (\ s a -> s{_cseslFileType = a})
-
--- | Specifies the search type: image.
-cseslSearchType :: Lens' CSESiterestrictList (Maybe CSESiterestrictListSearchType)
-cseslSearchType
-  = lens _cseslSearchType
-      (\ s a -> s{_cseslSearchType = a})
-
--- | The language restriction for the search results
-cseslLr :: Lens' CSESiterestrictList (Maybe CSESiterestrictListLr)
-cseslLr = lens _cseslLr (\ s a -> s{_cseslLr = a})
-
--- | Query
-cseslQ :: Lens' CSESiterestrictList Text
-cseslQ = lens _cseslQ (\ s a -> s{_cseslQ = a})
-
--- | The local Google domain to use to perform the search.
-cseslGooglehost :: Lens' CSESiterestrictList (Maybe Text)
-cseslGooglehost
-  = lens _cseslGooglehost
-      (\ s a -> s{_cseslGooglehost = a})
-
--- | Specifies that all search results should be pages that are related to
--- the specified URL
-cseslRelatedSite :: Lens' CSESiterestrictList (Maybe Text)
-cseslRelatedSite
-  = lens _cseslRelatedSite
-      (\ s a -> s{_cseslRelatedSite = a})
-
--- | Sets the user interface language.
-cseslHl :: Lens' CSESiterestrictList (Maybe Text)
-cseslHl = lens _cseslHl (\ s a -> s{_cseslHl = a})
-
--- | The sort expression to apply to the results
-cseslSort :: Lens' CSESiterestrictList (Maybe Text)
-cseslSort
-  = lens _cseslSort (\ s a -> s{_cseslSort = a})
-
--- | Specifies all search results should be pages from a given site
-cseslSiteSearch :: Lens' CSESiterestrictList (Maybe Text)
-cseslSiteSearch
-  = lens _cseslSiteSearch
-      (\ s a -> s{_cseslSiteSearch = a})
-
--- | Controls turning on or off the duplicate content filter.
-cseslFilter :: Lens' CSESiterestrictList (Maybe CSESiterestrictListFilter)
-cseslFilter
-  = lens _cseslFilter (\ s a -> s{_cseslFilter = a})
-
--- | Specifies all search results are from a time period
-cseslDateRestrict :: Lens' CSESiterestrictList (Maybe Text)
-cseslDateRestrict
-  = lens _cseslDateRestrict
-      (\ s a -> s{_cseslDateRestrict = a})
-
--- | Specifies that all search results should contain a link to a particular
--- URL
-cseslLinkSite :: Lens' CSESiterestrictList (Maybe Text)
-cseslLinkSite
-  = lens _cseslLinkSite
-      (\ s a -> s{_cseslLinkSite = a})
-
--- | Creates a range in form as_nlo value..as_nhi value and attempts to
--- append it to query
-cseslLowRange :: Lens' CSESiterestrictList (Maybe Text)
-cseslLowRange
-  = lens _cseslLowRange
-      (\ s a -> s{_cseslLowRange = a})
-
--- | Returns images of a type, which can be one of: clipart, face, lineart,
--- news, and photo.
-cseslImgType :: Lens' CSESiterestrictList (Maybe CSESiterestrictListImgType)
-cseslImgType
-  = lens _cseslImgType (\ s a -> s{_cseslImgType = a})
-
--- | Geolocation of end user.
-cseslGl :: Lens' CSESiterestrictList (Maybe Text)
-cseslGl = lens _cseslGl (\ s a -> s{_cseslGl = a})
-
--- | The custom search engine ID to scope this search query
-cseslCx :: Lens' CSESiterestrictList (Maybe Text)
-cseslCx = lens _cseslCx (\ s a -> s{_cseslCx = a})
-
--- | Returns black and white, grayscale, or color images: mono, gray, and
--- color.
-cseslImgColorType :: Lens' CSESiterestrictList (Maybe CSESiterestrictListImgColorType)
-cseslImgColorType
-  = lens _cseslImgColorType
-      (\ s a -> s{_cseslImgColorType = a})
-
--- | Returns images of a specified size, where size can be one of: icon,
--- small, medium, large, xlarge, xxlarge, and huge.
-cseslImgSize :: Lens' CSESiterestrictList (Maybe CSESiterestrictListImgSize)
-cseslImgSize
-  = lens _cseslImgSize (\ s a -> s{_cseslImgSize = a})
-
--- | Identifies a phrase that all documents in the search results must
--- contain
-cseslExactTerms :: Lens' CSESiterestrictList (Maybe Text)
-cseslExactTerms
-  = lens _cseslExactTerms
-      (\ s a -> s{_cseslExactTerms = a})
-
--- | Country restrict(s).
-cseslCr :: Lens' CSESiterestrictList (Maybe Text)
-cseslCr = lens _cseslCr (\ s a -> s{_cseslCr = a})
-
--- | Search safety level
-cseslSafe :: Lens' CSESiterestrictList CSESiterestrictListSafe
-cseslSafe
-  = lens _cseslSafe (\ s a -> s{_cseslSafe = a})
-
--- | Appends the extra query terms to the query.
-cseslHq :: Lens' CSESiterestrictList (Maybe Text)
-cseslHq = lens _cseslHq (\ s a -> s{_cseslHq = a})
-
--- | Creates a range in form as_nlo value..as_nhi value and attempts to
--- append it to query
-cseslHighRange :: Lens' CSESiterestrictList (Maybe Text)
-cseslHighRange
-  = lens _cseslHighRange
-      (\ s a -> s{_cseslHighRange = a})
-
-instance GoogleRequest CSESiterestrictList where
-        type Rs CSESiterestrictList = Search
-        type Scopes CSESiterestrictList = '[]
-        requestClient CSESiterestrictList'{..}
-          = go (Just _cseslQ) _cseslImgDominantColor
-              _cseslSiteSearchFilter
-              _cseslC2coff
-              _cseslOrTerms
-              _cseslStart
-              _cseslRights
-              _cseslExcludeTerms
-              (Just _cseslNum)
-              _cseslFileType
-              _cseslSearchType
-              _cseslLr
-              _cseslGooglehost
-              _cseslRelatedSite
-              _cseslHl
-              _cseslSort
-              _cseslSiteSearch
-              _cseslFilter
-              _cseslDateRestrict
-              _cseslLinkSite
-              _cseslLowRange
-              _cseslImgType
-              _cseslGl
-              _cseslCx
-              _cseslImgColorType
-              _cseslImgSize
-              _cseslExactTerms
-              _cseslCr
-              (Just _cseslSafe)
-              _cseslHq
-              _cseslHighRange
-              (Just AltJSON)
-              customSearchService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy CSESiterestrictListResource)
-                      mempty
diff --git a/gogol-customsearch.cabal b/gogol-customsearch.cabal
--- a/gogol-customsearch.cabal
+++ b/gogol-customsearch.cabal
@@ -1,47 +1,62 @@
-name:                  gogol-customsearch
-version:               0.5.0
-synopsis:              Google CustomSearch SDK.
-homepage:              https://github.com/brendanhay/gogol
-bug-reports:           https://github.com/brendanhay/gogol/issues
-license:               OtherLicense
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2015-2016 Brendan Hay
-category:              Network, Google, Cloud
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md src/.gitkeep
+cabal-version:      2.2
+name:               gogol-customsearch
+version:            1.0.0
+synopsis:           Google Custom Search SDK.
+homepage:           https://github.com/brendanhay/gogol
+bug-reports:        https://github.com/brendanhay/gogol/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+gogol@gmail.com>, Toni Cebrián <toni@tonicebrian.com>
 
+copyright:          Copyright (c) 2015-2025 Brendan Hay
+category:           Google
+build-type:         Simple
+extra-source-files:
+  README.md
+  src/.gitkeep
+
 description:
-    Searches over a website or collection of websites
-    .
-    /Warning:/ This is an experimental prototype/preview release which is still
-    under exploratory development and not intended for public use, caveat emptor!
-    .
-    This library is compatible with version @v1@
-    of the API.
+  Searches over a website or collection of websites
+  .
+  /Warning:/ This is an experimental prototype/preview release which is still
+  under exploratory development and not intended for public use, caveat emptor!
+  .
+  This library is compatible with version @v1@
+  of the API.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/gogol.git
+  type:     git
+  location: git://github.com/brendanhay/gogol.git
+  subdir:   gogol-customsearch
 
+flag field-selectors
+  description:
+    If record field selectors should be enabled. Disabling this requires GHC >=9.2 and the NoFieldSelectors extension.
+
+  default:     False
+  manual:      True
+
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
+  default-language: GHC2021
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
+    -fwarn-unused-packages
 
-    ghc-options:       -Wall
+  if (!flag(field-selectors) && impl(ghc >=9.2))
+    default-extensions: NoFieldSelectors
 
-    exposed-modules:
-          Network.Google.CustomSearch
-        , Network.Google.CustomSearch.Types
-        , Network.Google.Resource.Search.CSE.List
-        , Network.Google.Resource.Search.CSE.Siterestrict.List
+  exposed-modules:
+    Gogol.CustomSearch
+    Gogol.CustomSearch.Search.Cse.List
+    Gogol.CustomSearch.Search.Cse.Siterestrict.List
+    Gogol.CustomSearch.Types
 
-    other-modules:
-          Network.Google.CustomSearch.Types.Product
-        , Network.Google.CustomSearch.Types.Sum
+  other-modules:
+    Gogol.CustomSearch.Internal.Product
+    Gogol.CustomSearch.Internal.Sum
 
-    build-depends:
-          gogol-core == 0.5.0.*
-        , base       >= 4.7 && < 5
+  build-depends:    gogol-core ^>=1.0.0
