diff --git a/customsearch/v1/customsearch-api.json b/customsearch/v1/customsearch-api.json
index 2741c37..ec147c3 100644
--- a/customsearch/v1/customsearch-api.json
+++ b/customsearch/v1/customsearch-api.json
@@ -1,60 +1,33 @@
 {
-  "basePath": "",
-  "baseUrl": "https://customsearch.googleapis.com/",
-  "batchPath": "batch",
+  "basePath": "/customsearch/",
+  "baseUrl": "https://www.googleapis.com/customsearch/",
+  "batchPath": "batch/customsearch/v1",
   "description": "Searches over a website or collection of websites",
   "discoveryVersion": "v1",
-  "documentationLink": "https://developers.google.com/custom-search/v1/introduction",
+  "documentationLink": "https://developers.google.com/custom-search/v1/using_rest",
+  "etag": "\"u9GIe6H63LSGq-9_t39K2Zx_EAc/DuDrBlvHLFXE8uorI6UhfoH-kUs\"",
   "icons": {
-    "x16": "http://www.google.com/images/icons/product/search-16.gif",
-    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
   },
   "id": "customsearch:v1",
   "kind": "discovery#restDescription",
-  "mtlsRootUrl": "https://customsearch.mtls.googleapis.com/",
   "name": "customsearch",
   "ownerDomain": "google.com",
   "ownerName": "Google",
   "parameters": {
-    "$.xgafv": {
-      "description": "V1 error format.",
-      "enum": [
-        "1",
-        "2"
-      ],
-      "enumDescriptions": [
-        "v1 error format",
-        "v2 error format"
-      ],
-      "location": "query",
-      "type": "string"
-    },
-    "access_token": {
-      "description": "OAuth access token.",
-      "location": "query",
-      "type": "string"
-    },
     "alt": {
       "default": "json",
-      "description": "Data format for response.",
+      "description": "Data format for the response.",
       "enum": [
-        "json",
-        "media",
-        "proto"
+        "json"
       ],
       "enumDescriptions": [
-        "Responses with Content-Type of application/json",
-        "Media download with context-dependent Content-Type",
-        "Responses with Content-Type of application/x-protobuf"
+        "Responses with Content-Type of application/json"
       ],
       "location": "query",
       "type": "string"
     },
-    "callback": {
-      "description": "JSONP",
-      "location": "query",
-      "type": "string"
-    },
     "fields": {
       "description": "Selector specifying which fields to include in a partial response.",
       "location": "query",
@@ -77,17 +50,12 @@
       "type": "boolean"
     },
     "quotaUser": {
-      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+      "description": "An opaque string that represents a user for quota purposes. Must not exceed 40 characters.",
       "location": "query",
       "type": "string"
     },
-    "uploadType": {
-      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-      "location": "query",
-      "type": "string"
-    },
-    "upload_protocol": {
-      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+    "userIp": {
+      "description": "Deprecated. Please use quotaUser instead.",
       "location": "query",
       "type": "string"
     }
@@ -97,93 +65,118 @@
     "cse": {
       "methods": {
         "list": {
-          "description": "Returns metadata about the search performed, metadata about the custom\nsearch engine used for the search, and the search results.",
-          "flatPath": "customsearch/v1",
+          "description": "Returns metadata about the search performed, metadata about the custom search engine used for the search, and the search results.",
           "httpMethod": "GET",
           "id": "search.cse.list",
-          "parameterOrder": [],
+          "parameterOrder": [
+            "q"
+          ],
           "parameters": {
             "c2coff": {
-              "description": "Enables or disables [Simplified and Traditional Chinese\nSearch](https://developers.google.com/custom-search/docs/xml_results#chineseSearch).\n\nThe default value for this parameter is 0 (zero), meaning that the feature\nis enabled. Supported values are:\n\n* `1`: Disabled\n\n* `0`: Enabled (default)",
+              "description": "Turns off the translation between zh-CN and zh-TW.",
               "location": "query",
               "type": "string"
             },
             "cr": {
-              "description": "Restricts search results to documents originating in a particular country.\nYou may use [Boolean\noperators](https://developers.google.com/custom-search/docs/xml_results_appendices#booleanOperators)\nin the cr parameter's value.\n\nGoogle Search determines the country of a document by analyzing:\n\n* the top-level domain (TLD) of the document's URL\n\n* the geographic location of the Web server's IP address\n\nSee the [Country Parameter\nValues](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCollections)\npage for a list of valid values for this parameter.",
+              "description": "Country restrict(s).",
               "location": "query",
               "type": "string"
             },
             "cx": {
-              "description": "The custom search engine ID to use for this request.",
+              "description": "The custom search engine ID to scope this search query",
               "location": "query",
               "type": "string"
             },
             "dateRestrict": {
-              "description": "Restricts results to URLs based on date. Supported values include:\n\n* `d[number]`: requests results from the specified number of past days.\n\n* `w[number]`: requests results from the specified number of past weeks.\n\n* `m[number]`: requests results from the specified number of past months.\n\n* `y[number]`: requests results from the specified number of past years.",
+              "description": "Specifies all search results are from a time period",
               "location": "query",
               "type": "string"
             },
             "exactTerms": {
-              "description": "Identifies a phrase that all documents in the search results must contain.",
+              "description": "Identifies a phrase that all documents in the search results must contain",
               "location": "query",
               "type": "string"
             },
             "excludeTerms": {
-              "description": "Identifies a word or phrase that should not appear in any documents in the\nsearch results.",
+              "description": "Identifies a word or phrase that should not appear in any documents in the search results",
               "location": "query",
               "type": "string"
             },
             "fileType": {
-              "description": "Restricts results to files of a specified extension. A list of file types\nindexable by Google can be found in Search Console [Help\nCenter](https://support.google.com/webmasters/answer/35287).",
+              "description": "Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, pdf, ...",
               "location": "query",
               "type": "string"
             },
             "filter": {
-              "description": "Controls turning on or off the duplicate content filter.\n\n* See [Automatic\nFiltering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering)\nfor more information about Google's search results filters. Note that host\ncrowding filtering applies only to multi-site searches.\n\n* By default, Google applies filtering to all search results to improve the\nquality of those results.\n\nAcceptable values are:\n\n* `0`: Turns off duplicate content filter.\n\n* `1`: Turns on duplicate content filter.",
+              "description": "Controls turning on or off the duplicate content filter.",
+              "enum": [
+                "0",
+                "1"
+              ],
+              "enumDescriptions": [
+                "Turns off duplicate content filter.",
+                "Turns on duplicate content filter."
+              ],
               "location": "query",
               "type": "string"
             },
             "gl": {
-              "description": "Geolocation of end user.\n\n* The `gl` parameter value is a two-letter country code. The `gl` parameter\nboosts search results whose country of origin matches the parameter value.\nSee the [Country\nCodes](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCodes)\npage for a list of valid values.\n\n* Specifying a `gl` parameter value should lead to more relevant results.\nThis is particularly true for international customers and, even more\nspecifically, for customers in English- speaking countries other than the\nUnited States.",
+              "description": "Geolocation of end user.",
               "location": "query",
               "type": "string"
             },
             "googlehost": {
-              "description": "**Deprecated**. Use the `gl` parameter for a similar effect.\n\nThe local Google domain (for example, google.com, google.de, or\ngoogle.fr) to use to perform the search.",
+              "description": "The local Google domain to use to perform the search.",
               "location": "query",
               "type": "string"
             },
             "highRange": {
-              "description": "Specifies the ending value for a search range.\n\n* Use `lowRange` and `highRange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
+              "description": "Creates a range in form as_nlo value..as_nhi value and attempts to append it to query",
               "location": "query",
               "type": "string"
             },
             "hl": {
-              "description": "Sets the user interface language.\n\n* Explicitly setting this parameter improves the performance and the\nquality of your search results.\n\n* See the [Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages)\nsection of [Internationalizing Queries and Results\nPresentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing)\nfor more information, and (Supported Interface\nLanguages)[https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages]\nfor a list of supported languages.",
+              "description": "Sets the user interface language.",
               "location": "query",
               "type": "string"
             },
             "hq": {
-              "description": "Appends the specified query terms to the query, as if they were combined\nwith a logical AND operator.",
+              "description": "Appends the extra query terms to the query.",
               "location": "query",
               "type": "string"
             },
             "imgColorType": {
-              "description": "Returns black and white, grayscale, transparent, or color images.\nAcceptable values are:\n\n* `\"color\"`\n\n* `\"gray\"`\n\n* `\"mono\"`: black and white\n\n* `\"trans\"`: transparent background",
+              "description": "Returns black and white, grayscale, or color images: mono, gray, and color.",
               "enum": [
-                "imgColorTypeUndefined",
-                "mono",
-                "gray",
                 "color",
-                "trans"
+                "gray",
+                "mono"
+              ],
+              "enumDescriptions": [
+                "color",
+                "gray",
+                "mono"
               ],
               "location": "query",
               "type": "string"
             },
             "imgDominantColor": {
-              "description": "Returns images of a specific dominant color. Acceptable values are:\n\n* `\"black\"`\n\n* `\"blue\"`\n\n* `\"brown\"`\n\n* `\"gray\"`\n\n* `\"green\"`\n\n* `\"orange\"`\n\n* `\"pink\"`\n\n* `\"purple\"`\n\n* `\"red\"`\n\n* `\"teal\"`\n\n* `\"white\"`\n\n* `\"yellow\"`",
+              "description": "Returns images of a specific dominant color: red, orange, yellow, green, teal, blue, purple, pink, white, gray, black and brown.",
               "enum": [
-                "imgDominantColorUndefined",
+                "black",
+                "blue",
+                "brown",
+                "gray",
+                "green",
+                "orange",
+                "pink",
+                "purple",
+                "red",
+                "teal",
+                "white",
+                "yellow"
+              ],
+              "enumDescriptions": [
                 "black",
                 "blue",
                 "brown",
@@ -201,388 +194,635 @@
               "type": "string"
             },
             "imgSize": {
-              "description": "Returns images of a specified size. Acceptable values are:\n\n* `\"huge\"`\n\n* `\"icon\"`\n\n* `\"large\"`\n\n* `\"medium\"`\n\n* `\"small\"`\n\n* `\"xlarge\"`\n\n* `\"xxlarge\"`",
+              "description": "Returns images of a specified size, where size can be one of: icon, small, medium, large, xlarge, xxlarge, and huge.",
               "enum": [
-                "imgSizeUndefined",
-                "HUGE",
-                "ICON",
-                "LARGE",
-                "MEDIUM",
-                "SMALL",
-                "XLARGE",
-                "XXLARGE"
+                "huge",
+                "icon",
+                "large",
+                "medium",
+                "small",
+                "xlarge",
+                "xxlarge"
+              ],
+              "enumDescriptions": [
+                "huge",
+                "icon",
+                "large",
+                "medium",
+                "small",
+                "xlarge",
+                "xxlarge"
               ],
               "location": "query",
               "type": "string"
             },
             "imgType": {
-              "description": "Returns images of a type. Acceptable values are:\n\n* `\"clipart\"`\n\n* `\"face\"`\n\n* `\"lineart\"`\n\n* `\"stock\"`\n\n* `\"photo\"`\n\n* `\"animated\"`",
+              "description": "Returns images of a type, which can be one of: clipart, face, lineart, news, and photo.",
               "enum": [
-                "imgTypeUndefined",
                 "clipart",
                 "face",
                 "lineart",
-                "stock",
-                "photo",
-                "animated"
+                "news",
+                "photo"
+              ],
+              "enumDescriptions": [
+                "clipart",
+                "face",
+                "lineart",
+                "news",
+                "photo"
               ],
               "location": "query",
               "type": "string"
             },
             "linkSite": {
-              "description": "Specifies that all search results should contain a link to a particular\nURL.",
+              "description": "Specifies that all search results should contain a link to a particular URL",
               "location": "query",
               "type": "string"
             },
             "lowRange": {
-              "description": "Specifies the starting value for a search range. Use `lowRange` and\n`highRange` to append an inclusive search range of `lowRange...highRange`\nto the query.",
+              "description": "Creates a range in form as_nlo value..as_nhi value and attempts to append it to query",
               "location": "query",
               "type": "string"
             },
             "lr": {
-              "description": "Restricts the search to documents written in a particular language (e.g.,\n`lr=lang_ja`).\n\nAcceptable values are:\n\n* `\"lang_ar\"`: Arabic\n\n* `\"lang_bg\"`: Bulgarian\n\n* `\"lang_ca\"`: Catalan\n\n* `\"lang_cs\"`: Czech\n\n* `\"lang_da\"`: Danish\n\n* `\"lang_de\"`: German\n\n* `\"lang_el\"`: Greek\n\n* `\"lang_en\"`: English\n\n* `\"lang_es\"`: Spanish\n\n* `\"lang_et\"`: Estonian\n\n* `\"lang_fi\"`: Finnish\n\n* `\"lang_fr\"`: French\n\n* `\"lang_hr\"`: Croatian\n\n* `\"lang_hu\"`: Hungarian\n\n* `\"lang_id\"`: Indonesian\n\n* `\"lang_is\"`: Icelandic\n\n* `\"lang_it\"`: Italian\n\n* `\"lang_iw\"`: Hebrew\n\n* `\"lang_ja\"`: Japanese\n\n* `\"lang_ko\"`: Korean\n\n* `\"lang_lt\"`: Lithuanian\n\n* `\"lang_lv\"`: Latvian\n\n* `\"lang_nl\"`: Dutch\n\n* `\"lang_no\"`: Norwegian\n\n* `\"lang_pl\"`: Polish\n\n* `\"lang_pt\"`: Portuguese\n\n* `\"lang_ro\"`: Romanian\n\n* `\"lang_ru\"`: Russian\n\n* `\"lang_sk\"`: Slovak\n\n* `\"lang_sl\"`: Slovenian\n\n* `\"lang_sr\"`: Serbian\n\n* `\"lang_sv\"`: Swedish\n\n* `\"lang_tr\"`: Turkish\n\n* `\"lang_zh-CN\"`: Chinese (Simplified)\n\n* `\"lang_zh-TW\"`: Chinese (Traditional)",
+              "description": "The language restriction for the search results",
+              "enum": [
+                "lang_ar",
+                "lang_bg",
+                "lang_ca",
+                "lang_cs",
+                "lang_da",
+                "lang_de",
+                "lang_el",
+                "lang_en",
+                "lang_es",
+                "lang_et",
+                "lang_fi",
+                "lang_fr",
+                "lang_hr",
+                "lang_hu",
+                "lang_id",
+                "lang_is",
+                "lang_it",
+                "lang_iw",
+                "lang_ja",
+                "lang_ko",
+                "lang_lt",
+                "lang_lv",
+                "lang_nl",
+                "lang_no",
+                "lang_pl",
+                "lang_pt",
+                "lang_ro",
+                "lang_ru",
+                "lang_sk",
+                "lang_sl",
+                "lang_sr",
+                "lang_sv",
+                "lang_tr",
+                "lang_zh-CN",
+                "lang_zh-TW"
+              ],
+              "enumDescriptions": [
+                "Arabic",
+                "Bulgarian",
+                "Catalan",
+                "Czech",
+                "Danish",
+                "German",
+                "Greek",
+                "English",
+                "Spanish",
+                "Estonian",
+                "Finnish",
+                "French",
+                "Croatian",
+                "Hungarian",
+                "Indonesian",
+                "Icelandic",
+                "Italian",
+                "Hebrew",
+                "Japanese",
+                "Korean",
+                "Lithuanian",
+                "Latvian",
+                "Dutch",
+                "Norwegian",
+                "Polish",
+                "Portuguese",
+                "Romanian",
+                "Russian",
+                "Slovak",
+                "Slovenian",
+                "Serbian",
+                "Swedish",
+                "Turkish",
+                "Chinese (Simplified)",
+                "Chinese (Traditional)"
+              ],
               "location": "query",
               "type": "string"
             },
             "num": {
-              "description": "Number of search results to return.\n\n* Valid values are integers between 1 and 10, inclusive.",
-              "format": "int32",
+              "default": "10",
+              "description": "Number of search results to return",
+              "format": "uint32",
               "location": "query",
               "type": "integer"
             },
             "orTerms": {
-              "description": "Provides additional search terms to check for in a document, where each\ndocument in the search results must contain at least one of the additional\nsearch terms.",
+              "description": "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",
               "location": "query",
               "type": "string"
             },
             "q": {
               "description": "Query",
               "location": "query",
+              "required": true,
               "type": "string"
             },
             "relatedSite": {
-              "description": "Specifies that all search results should be pages that are related to the\nspecified URL.",
+              "description": "Specifies that all search results should be pages that are related to the specified URL",
               "location": "query",
               "type": "string"
             },
             "rights": {
-              "description": "Filters based on licensing. Supported values include: `cc_publicdomain`,\n`cc_attribute`, `cc_sharealike`, `cc_noncommercial`, `cc_nonderived` and\ncombinations of these. See [typical\ncombinations](https://wiki.creativecommons.org/wiki/CC_Search_integration).",
+              "description": "Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these.",
               "location": "query",
               "type": "string"
             },
             "safe": {
-              "description": "Search safety level. Acceptable values are:\n\n* `\"active\"`: Enables SafeSearch filtering.\n\n* `\"off\"`: Disables SafeSearch filtering. (default)",
+              "default": "off",
+              "description": "Search safety level",
               "enum": [
-                "safeUndefined",
                 "active",
                 "high",
                 "medium",
                 "off"
               ],
+              "enumDescriptions": [
+                "Enables safe search filtering.",
+                "(Deprecated) Same as active.",
+                "(Deprecated) Same as active.",
+                "Disables safe search filtering."
+              ],
               "location": "query",
               "type": "string"
             },
             "searchType": {
-              "description": "Specifies the search type: `image`. If unspecified, results are limited to\nwebpages.\n\nAcceptable values are:\n\n* `\"image\"`: custom image search.",
+              "description": "Specifies the search type: image.",
               "enum": [
-                "searchTypeUndefined",
                 "image"
               ],
+              "enumDescriptions": [
+                "custom image search"
+              ],
               "location": "query",
               "type": "string"
             },
             "siteSearch": {
-              "description": "Specifies a given site which should always be included or excluded from\nresults (see `siteSearchFilter` parameter, below).",
+              "description": "Specifies all search results should be pages from a given site",
               "location": "query",
               "type": "string"
             },
             "siteSearchFilter": {
-              "description": "Controls whether to include or exclude results from the site named in the\n`siteSearch` parameter.\n\nAcceptable values are:\n\n* `\"e\"`: exclude\n\n* `\"i\"`: include",
+              "description": "Controls whether to include or exclude results from the site named in the as_sitesearch parameter",
               "enum": [
-                "siteSearchFilterUndefined",
                 "e",
                 "i"
               ],
+              "enumDescriptions": [
+                "exclude",
+                "include"
+              ],
               "location": "query",
               "type": "string"
             },
             "sort": {
-              "description": "The sort expression to apply to the results.",
+              "description": "The sort expression to apply to the results",
               "location": "query",
               "type": "string"
             },
             "start": {
-              "description": "The index of the first result to return. The default number of results per\npage is 10, so `\u0026start=11` would start at the top of the second page of\nresults. **Note**: The JSON API will never return more than 100 results,\neven if more than 100 documents match the query, so setting the sum of\n`start + num` to a number greater than 100 will produce an error. Also note\nthat the maximum value for `num` is 10.",
+              "description": "The index of the first result to return",
               "format": "uint32",
               "location": "query",
               "type": "integer"
             }
           },
-          "path": "customsearch/v1",
+          "path": "v1",
           "response": {
             "$ref": "Search"
           }
         }
-      }
-    },
-    "siterestrict": {
-      "methods": {
-        "list": {
-          "description": "Returns metadata about the search performed, metadata about the custom\nsearch engine used for the search, and the search results. Uses a small set\nof url patterns.",
-          "flatPath": "customsearch/v1/siterestrict",
-          "httpMethod": "GET",
-          "id": "search.cse.siterestrict.list",
-          "parameterOrder": [],
-          "parameters": {
-            "c2coff": {
-              "description": "Enables or disables [Simplified and Traditional Chinese\nSearch](https://developers.google.com/custom-search/docs/xml_results#chineseSearch).\n\nThe default value for this parameter is 0 (zero), meaning that the feature\nis enabled. Supported values are:\n\n* `1`: Disabled\n\n* `0`: Enabled (default)",
-              "location": "query",
-              "type": "string"
-            },
-            "cr": {
-              "description": "Restricts search results to documents originating in a particular country.\nYou may use [Boolean\noperators](https://developers.google.com/custom-search/docs/xml_results_appendices#booleanOperators)\nin the cr parameter's value.\n\nGoogle Search determines the country of a document by analyzing:\n\n* the top-level domain (TLD) of the document's URL\n\n* the geographic location of the Web server's IP address\n\nSee the [Country Parameter\nValues](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCollections)\npage for a list of valid values for this parameter.",
-              "location": "query",
-              "type": "string"
-            },
-            "cx": {
-              "description": "The custom search engine ID to use for this request.",
-              "location": "query",
-              "type": "string"
-            },
-            "dateRestrict": {
-              "description": "Restricts results to URLs based on date. Supported values include:\n\n* `d[number]`: requests results from the specified number of past days.\n\n* `w[number]`: requests results from the specified number of past weeks.\n\n* `m[number]`: requests results from the specified number of past months.\n\n* `y[number]`: requests results from the specified number of past years.",
-              "location": "query",
-              "type": "string"
-            },
-            "exactTerms": {
-              "description": "Identifies a phrase that all documents in the search results must contain.",
-              "location": "query",
-              "type": "string"
-            },
-            "excludeTerms": {
-              "description": "Identifies a word or phrase that should not appear in any documents in the\nsearch results.",
-              "location": "query",
-              "type": "string"
-            },
-            "fileType": {
-              "description": "Restricts results to files of a specified extension. A list of file types\nindexable by Google can be found in Search Console [Help\nCenter](https://support.google.com/webmasters/answer/35287).",
-              "location": "query",
-              "type": "string"
-            },
-            "filter": {
-              "description": "Controls turning on or off the duplicate content filter.\n\n* See [Automatic\nFiltering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering)\nfor more information about Google's search results filters. Note that host\ncrowding filtering applies only to multi-site searches.\n\n* By default, Google applies filtering to all search results to improve the\nquality of those results.\n\nAcceptable values are:\n\n* `0`: Turns off duplicate content filter.\n\n* `1`: Turns on duplicate content filter.",
-              "location": "query",
-              "type": "string"
-            },
-            "gl": {
-              "description": "Geolocation of end user.\n\n* The `gl` parameter value is a two-letter country code. The `gl` parameter\nboosts search results whose country of origin matches the parameter value.\nSee the [Country\nCodes](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCodes)\npage for a list of valid values.\n\n* Specifying a `gl` parameter value should lead to more relevant results.\nThis is particularly true for international customers and, even more\nspecifically, for customers in English- speaking countries other than the\nUnited States.",
-              "location": "query",
-              "type": "string"
-            },
-            "googlehost": {
-              "description": "**Deprecated**. Use the `gl` parameter for a similar effect.\n\nThe local Google domain (for example, google.com, google.de, or\ngoogle.fr) to use to perform the search.",
-              "location": "query",
-              "type": "string"
-            },
-            "highRange": {
-              "description": "Specifies the ending value for a search range.\n\n* Use `lowRange` and `highRange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
-              "location": "query",
-              "type": "string"
-            },
-            "hl": {
-              "description": "Sets the user interface language.\n\n* Explicitly setting this parameter improves the performance and the\nquality of your search results.\n\n* See the [Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages)\nsection of [Internationalizing Queries and Results\nPresentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing)\nfor more information, and (Supported Interface\nLanguages)[https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages]\nfor a list of supported languages.",
-              "location": "query",
-              "type": "string"
-            },
-            "hq": {
-              "description": "Appends the specified query terms to the query, as if they were combined\nwith a logical AND operator.",
-              "location": "query",
-              "type": "string"
-            },
-            "imgColorType": {
-              "description": "Returns black and white, grayscale, transparent, or color images.\nAcceptable values are:\n\n* `\"color\"`\n\n* `\"gray\"`\n\n* `\"mono\"`: black and white\n\n* `\"trans\"`: transparent background",
-              "enum": [
-                "imgColorTypeUndefined",
-                "mono",
-                "gray",
-                "color",
-                "trans"
+      },
+      "resources": {
+        "siterestrict": {
+          "methods": {
+            "list": {
+              "description": "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.",
+              "httpMethod": "GET",
+              "id": "search.cse.siterestrict.list",
+              "parameterOrder": [
+                "q"
               ],
-              "location": "query",
-              "type": "string"
-            },
-            "imgDominantColor": {
-              "description": "Returns images of a specific dominant color. Acceptable values are:\n\n* `\"black\"`\n\n* `\"blue\"`\n\n* `\"brown\"`\n\n* `\"gray\"`\n\n* `\"green\"`\n\n* `\"orange\"`\n\n* `\"pink\"`\n\n* `\"purple\"`\n\n* `\"red\"`\n\n* `\"teal\"`\n\n* `\"white\"`\n\n* `\"yellow\"`",
-              "enum": [
-                "imgDominantColorUndefined",
-                "black",
-                "blue",
-                "brown",
-                "gray",
-                "green",
-                "orange",
-                "pink",
-                "purple",
-                "red",
-                "teal",
-                "white",
-                "yellow"
-              ],
-              "location": "query",
-              "type": "string"
-            },
-            "imgSize": {
-              "description": "Returns images of a specified size. Acceptable values are:\n\n* `\"huge\"`\n\n* `\"icon\"`\n\n* `\"large\"`\n\n* `\"medium\"`\n\n* `\"small\"`\n\n* `\"xlarge\"`\n\n* `\"xxlarge\"`",
-              "enum": [
-                "imgSizeUndefined",
-                "HUGE",
-                "ICON",
-                "LARGE",
-                "MEDIUM",
-                "SMALL",
-                "XLARGE",
-                "XXLARGE"
-              ],
-              "location": "query",
-              "type": "string"
-            },
-            "imgType": {
-              "description": "Returns images of a type. Acceptable values are:\n\n* `\"clipart\"`\n\n* `\"face\"`\n\n* `\"lineart\"`\n\n* `\"stock\"`\n\n* `\"photo\"`\n\n* `\"animated\"`",
-              "enum": [
-                "imgTypeUndefined",
-                "clipart",
-                "face",
-                "lineart",
-                "stock",
-                "photo",
-                "animated"
-              ],
-              "location": "query",
-              "type": "string"
-            },
-            "linkSite": {
-              "description": "Specifies that all search results should contain a link to a particular\nURL.",
-              "location": "query",
-              "type": "string"
-            },
-            "lowRange": {
-              "description": "Specifies the starting value for a search range. Use `lowRange` and\n`highRange` to append an inclusive search range of `lowRange...highRange`\nto the query.",
-              "location": "query",
-              "type": "string"
-            },
-            "lr": {
-              "description": "Restricts the search to documents written in a particular language (e.g.,\n`lr=lang_ja`).\n\nAcceptable values are:\n\n* `\"lang_ar\"`: Arabic\n\n* `\"lang_bg\"`: Bulgarian\n\n* `\"lang_ca\"`: Catalan\n\n* `\"lang_cs\"`: Czech\n\n* `\"lang_da\"`: Danish\n\n* `\"lang_de\"`: German\n\n* `\"lang_el\"`: Greek\n\n* `\"lang_en\"`: English\n\n* `\"lang_es\"`: Spanish\n\n* `\"lang_et\"`: Estonian\n\n* `\"lang_fi\"`: Finnish\n\n* `\"lang_fr\"`: French\n\n* `\"lang_hr\"`: Croatian\n\n* `\"lang_hu\"`: Hungarian\n\n* `\"lang_id\"`: Indonesian\n\n* `\"lang_is\"`: Icelandic\n\n* `\"lang_it\"`: Italian\n\n* `\"lang_iw\"`: Hebrew\n\n* `\"lang_ja\"`: Japanese\n\n* `\"lang_ko\"`: Korean\n\n* `\"lang_lt\"`: Lithuanian\n\n* `\"lang_lv\"`: Latvian\n\n* `\"lang_nl\"`: Dutch\n\n* `\"lang_no\"`: Norwegian\n\n* `\"lang_pl\"`: Polish\n\n* `\"lang_pt\"`: Portuguese\n\n* `\"lang_ro\"`: Romanian\n\n* `\"lang_ru\"`: Russian\n\n* `\"lang_sk\"`: Slovak\n\n* `\"lang_sl\"`: Slovenian\n\n* `\"lang_sr\"`: Serbian\n\n* `\"lang_sv\"`: Swedish\n\n* `\"lang_tr\"`: Turkish\n\n* `\"lang_zh-CN\"`: Chinese (Simplified)\n\n* `\"lang_zh-TW\"`: Chinese (Traditional)",
-              "location": "query",
-              "type": "string"
-            },
-            "num": {
-              "description": "Number of search results to return.\n\n* Valid values are integers between 1 and 10, inclusive.",
-              "format": "int32",
-              "location": "query",
-              "type": "integer"
-            },
-            "orTerms": {
-              "description": "Provides additional search terms to check for in a document, where each\ndocument in the search results must contain at least one of the additional\nsearch terms.",
-              "location": "query",
-              "type": "string"
-            },
-            "q": {
-              "description": "Query",
-              "location": "query",
-              "type": "string"
-            },
-            "relatedSite": {
-              "description": "Specifies that all search results should be pages that are related to the\nspecified URL.",
-              "location": "query",
-              "type": "string"
-            },
-            "rights": {
-              "description": "Filters based on licensing. Supported values include: `cc_publicdomain`,\n`cc_attribute`, `cc_sharealike`, `cc_noncommercial`, `cc_nonderived` and\ncombinations of these. See [typical\ncombinations](https://wiki.creativecommons.org/wiki/CC_Search_integration).",
-              "location": "query",
-              "type": "string"
-            },
-            "safe": {
-              "description": "Search safety level. Acceptable values are:\n\n* `\"active\"`: Enables SafeSearch filtering.\n\n* `\"off\"`: Disables SafeSearch filtering. (default)",
-              "enum": [
-                "safeUndefined",
-                "active",
-                "high",
-                "medium",
-                "off"
-              ],
-              "location": "query",
-              "type": "string"
-            },
-            "searchType": {
-              "description": "Specifies the search type: `image`. If unspecified, results are limited to\nwebpages.\n\nAcceptable values are:\n\n* `\"image\"`: custom image search.",
-              "enum": [
-                "searchTypeUndefined",
-                "image"
-              ],
-              "location": "query",
-              "type": "string"
-            },
-            "siteSearch": {
-              "description": "Specifies a given site which should always be included or excluded from\nresults (see `siteSearchFilter` parameter, below).",
-              "location": "query",
-              "type": "string"
-            },
-            "siteSearchFilter": {
-              "description": "Controls whether to include or exclude results from the site named in the\n`siteSearch` parameter.\n\nAcceptable values are:\n\n* `\"e\"`: exclude\n\n* `\"i\"`: include",
-              "enum": [
-                "siteSearchFilterUndefined",
-                "e",
-                "i"
-              ],
-              "location": "query",
-              "type": "string"
-            },
-            "sort": {
-              "description": "The sort expression to apply to the results.",
-              "location": "query",
-              "type": "string"
-            },
-            "start": {
-              "description": "The index of the first result to return. The default number of results per\npage is 10, so `\u0026start=11` would start at the top of the second page of\nresults. **Note**: The JSON API will never return more than 100 results,\neven if more than 100 documents match the query, so setting the sum of\n`start + num` to a number greater than 100 will produce an error. Also note\nthat the maximum value for `num` is 10.",
-              "format": "uint32",
-              "location": "query",
-              "type": "integer"
+              "parameters": {
+                "c2coff": {
+                  "description": "Turns off the translation between zh-CN and zh-TW.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "cr": {
+                  "description": "Country restrict(s).",
+                  "location": "query",
+                  "type": "string"
+                },
+                "cx": {
+                  "description": "The custom search engine ID to scope this search query",
+                  "location": "query",
+                  "type": "string"
+                },
+                "dateRestrict": {
+                  "description": "Specifies all search results are from a time period",
+                  "location": "query",
+                  "type": "string"
+                },
+                "exactTerms": {
+                  "description": "Identifies a phrase that all documents in the search results must contain",
+                  "location": "query",
+                  "type": "string"
+                },
+                "excludeTerms": {
+                  "description": "Identifies a word or phrase that should not appear in any documents in the search results",
+                  "location": "query",
+                  "type": "string"
+                },
+                "fileType": {
+                  "description": "Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, pdf, ...",
+                  "location": "query",
+                  "type": "string"
+                },
+                "filter": {
+                  "description": "Controls turning on or off the duplicate content filter.",
+                  "enum": [
+                    "0",
+                    "1"
+                  ],
+                  "enumDescriptions": [
+                    "Turns off duplicate content filter.",
+                    "Turns on duplicate content filter."
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "gl": {
+                  "description": "Geolocation of end user.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "googlehost": {
+                  "description": "The local Google domain to use to perform the search.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "highRange": {
+                  "description": "Creates a range in form as_nlo value..as_nhi value and attempts to append it to query",
+                  "location": "query",
+                  "type": "string"
+                },
+                "hl": {
+                  "description": "Sets the user interface language.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "hq": {
+                  "description": "Appends the extra query terms to the query.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "imgColorType": {
+                  "description": "Returns black and white, grayscale, or color images: mono, gray, and color.",
+                  "enum": [
+                    "color",
+                    "gray",
+                    "mono"
+                  ],
+                  "enumDescriptions": [
+                    "color",
+                    "gray",
+                    "mono"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "imgDominantColor": {
+                  "description": "Returns images of a specific dominant color: red, orange, yellow, green, teal, blue, purple, pink, white, gray, black and brown.",
+                  "enum": [
+                    "black",
+                    "blue",
+                    "brown",
+                    "gray",
+                    "green",
+                    "orange",
+                    "pink",
+                    "purple",
+                    "red",
+                    "teal",
+                    "white",
+                    "yellow"
+                  ],
+                  "enumDescriptions": [
+                    "black",
+                    "blue",
+                    "brown",
+                    "gray",
+                    "green",
+                    "orange",
+                    "pink",
+                    "purple",
+                    "red",
+                    "teal",
+                    "white",
+                    "yellow"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "imgSize": {
+                  "description": "Returns images of a specified size, where size can be one of: icon, small, medium, large, xlarge, xxlarge, and huge.",
+                  "enum": [
+                    "huge",
+                    "icon",
+                    "large",
+                    "medium",
+                    "small",
+                    "xlarge",
+                    "xxlarge"
+                  ],
+                  "enumDescriptions": [
+                    "huge",
+                    "icon",
+                    "large",
+                    "medium",
+                    "small",
+                    "xlarge",
+                    "xxlarge"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "imgType": {
+                  "description": "Returns images of a type, which can be one of: clipart, face, lineart, news, and photo.",
+                  "enum": [
+                    "clipart",
+                    "face",
+                    "lineart",
+                    "news",
+                    "photo"
+                  ],
+                  "enumDescriptions": [
+                    "clipart",
+                    "face",
+                    "lineart",
+                    "news",
+                    "photo"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "linkSite": {
+                  "description": "Specifies that all search results should contain a link to a particular URL",
+                  "location": "query",
+                  "type": "string"
+                },
+                "lowRange": {
+                  "description": "Creates a range in form as_nlo value..as_nhi value and attempts to append it to query",
+                  "location": "query",
+                  "type": "string"
+                },
+                "lr": {
+                  "description": "The language restriction for the search results",
+                  "enum": [
+                    "lang_ar",
+                    "lang_bg",
+                    "lang_ca",
+                    "lang_cs",
+                    "lang_da",
+                    "lang_de",
+                    "lang_el",
+                    "lang_en",
+                    "lang_es",
+                    "lang_et",
+                    "lang_fi",
+                    "lang_fr",
+                    "lang_hr",
+                    "lang_hu",
+                    "lang_id",
+                    "lang_is",
+                    "lang_it",
+                    "lang_iw",
+                    "lang_ja",
+                    "lang_ko",
+                    "lang_lt",
+                    "lang_lv",
+                    "lang_nl",
+                    "lang_no",
+                    "lang_pl",
+                    "lang_pt",
+                    "lang_ro",
+                    "lang_ru",
+                    "lang_sk",
+                    "lang_sl",
+                    "lang_sr",
+                    "lang_sv",
+                    "lang_tr",
+                    "lang_zh-CN",
+                    "lang_zh-TW"
+                  ],
+                  "enumDescriptions": [
+                    "Arabic",
+                    "Bulgarian",
+                    "Catalan",
+                    "Czech",
+                    "Danish",
+                    "German",
+                    "Greek",
+                    "English",
+                    "Spanish",
+                    "Estonian",
+                    "Finnish",
+                    "French",
+                    "Croatian",
+                    "Hungarian",
+                    "Indonesian",
+                    "Icelandic",
+                    "Italian",
+                    "Hebrew",
+                    "Japanese",
+                    "Korean",
+                    "Lithuanian",
+                    "Latvian",
+                    "Dutch",
+                    "Norwegian",
+                    "Polish",
+                    "Portuguese",
+                    "Romanian",
+                    "Russian",
+                    "Slovak",
+                    "Slovenian",
+                    "Serbian",
+                    "Swedish",
+                    "Turkish",
+                    "Chinese (Simplified)",
+                    "Chinese (Traditional)"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "num": {
+                  "default": "10",
+                  "description": "Number of search results to return",
+                  "format": "uint32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "orTerms": {
+                  "description": "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",
+                  "location": "query",
+                  "type": "string"
+                },
+                "q": {
+                  "description": "Query",
+                  "location": "query",
+                  "required": true,
+                  "type": "string"
+                },
+                "relatedSite": {
+                  "description": "Specifies that all search results should be pages that are related to the specified URL",
+                  "location": "query",
+                  "type": "string"
+                },
+                "rights": {
+                  "description": "Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "safe": {
+                  "default": "off",
+                  "description": "Search safety level",
+                  "enum": [
+                    "high",
+                    "medium",
+                    "off"
+                  ],
+                  "enumDescriptions": [
+                    "Enables highest level of safe search filtering.",
+                    "Enables moderate safe search filtering.",
+                    "Disables safe search filtering."
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "searchType": {
+                  "description": "Specifies the search type: image.",
+                  "enum": [
+                    "image"
+                  ],
+                  "enumDescriptions": [
+                    "custom image search"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "siteSearch": {
+                  "description": "Specifies all search results should be pages from a given site",
+                  "location": "query",
+                  "type": "string"
+                },
+                "siteSearchFilter": {
+                  "description": "Controls whether to include or exclude results from the site named in the as_sitesearch parameter",
+                  "enum": [
+                    "e",
+                    "i"
+                  ],
+                  "enumDescriptions": [
+                    "exclude",
+                    "include"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "sort": {
+                  "description": "The sort expression to apply to the results",
+                  "location": "query",
+                  "type": "string"
+                },
+                "start": {
+                  "description": "The index of the first result to return",
+                  "format": "uint32",
+                  "location": "query",
+                  "type": "integer"
+                }
+              },
+              "path": "v1/siterestrict",
+              "response": {
+                "$ref": "Search"
+              }
             }
-          },
-          "path": "customsearch/v1/siterestrict",
-          "response": {
-            "$ref": "Search"
           }
         }
       }
     }
   },
-  "revision": "20200408",
-  "rootUrl": "https://customsearch.googleapis.com/",
+  "revision": "20181001",
+  "rootUrl": "https://www.googleapis.com/",
   "schemas": {
+    "Context": {
+      "id": "Context",
+      "properties": {
+        "facets": {
+          "items": {
+            "items": {
+              "properties": {
+                "anchor": {
+                  "type": "string"
+                },
+                "label": {
+                  "type": "string"
+                },
+                "label_with_op": {
+                  "type": "string"
+                }
+              },
+              "type": "object"
+            },
+            "type": "array"
+          },
+          "type": "array"
+        },
+        "title": {
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Promotion": {
-      "description": "Promotion result.",
       "id": "Promotion",
       "properties": {
         "bodyLines": {
-          "description": "An array of block objects for this promotion. See [Google WebSearch\nProtocol\nreference](https://developers.google.com/custom-search/docs/xml_results)\nfor more information.",
           "items": {
-            "description": "Block object belonging to a promotion.",
             "properties": {
               "htmlTitle": {
-                "description": "The block object's text in HTML, if it has text.",
                 "type": "string"
               },
               "link": {
-                "description": "The anchor text of the block object's link, if it has a link.",
                 "type": "string"
               },
               "title": {
-                "description": "The block object's text, if it has text.",
                 "type": "string"
               },
               "url": {
-                "description": "The URL of the block object's link, if it has one.",
                 "type": "string"
               }
             },
@@ -591,27 +831,21 @@
           "type": "array"
         },
         "displayLink": {
-          "description": "An abridged version of this search's result URL, e.g. www.example.com.",
           "type": "string"
         },
         "htmlTitle": {
-          "description": "The title of the promotion, in HTML.",
           "type": "string"
         },
         "image": {
-          "description": "Image belonging to a promotion.",
           "properties": {
             "height": {
-              "description": "Image height in pixels.",
               "format": "int32",
               "type": "integer"
             },
             "source": {
-              "description": "URL of the image for this promotion link.",
               "type": "string"
             },
             "width": {
-              "description": "Image width in pixels.",
               "format": "int32",
               "type": "integer"
             }
@@ -619,81 +853,181 @@
           "type": "object"
         },
         "link": {
-          "description": "The URL of the promotion.",
           "type": "string"
         },
         "title": {
-          "description": "The title of the promotion.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Query": {
+      "id": "Query",
+      "properties": {
+        "count": {
+          "format": "int32",
+          "type": "integer"
+        },
+        "cr": {
+          "type": "string"
+        },
+        "cx": {
+          "type": "string"
+        },
+        "dateRestrict": {
+          "type": "string"
+        },
+        "disableCnTwTranslation": {
+          "type": "string"
+        },
+        "exactTerms": {
+          "type": "string"
+        },
+        "excludeTerms": {
+          "type": "string"
+        },
+        "fileType": {
+          "type": "string"
+        },
+        "filter": {
+          "type": "string"
+        },
+        "gl": {
+          "type": "string"
+        },
+        "googleHost": {
+          "type": "string"
+        },
+        "highRange": {
+          "type": "string"
+        },
+        "hl": {
+          "type": "string"
+        },
+        "hq": {
+          "type": "string"
+        },
+        "imgColorType": {
+          "type": "string"
+        },
+        "imgDominantColor": {
+          "type": "string"
+        },
+        "imgSize": {
+          "type": "string"
+        },
+        "imgType": {
+          "type": "string"
+        },
+        "inputEncoding": {
+          "type": "string"
+        },
+        "language": {
+          "type": "string"
+        },
+        "linkSite": {
+          "type": "string"
+        },
+        "lowRange": {
+          "type": "string"
+        },
+        "orTerms": {
+          "type": "string"
+        },
+        "outputEncoding": {
+          "type": "string"
+        },
+        "relatedSite": {
+          "type": "string"
+        },
+        "rights": {
+          "type": "string"
+        },
+        "safe": {
+          "type": "string"
+        },
+        "searchTerms": {
+          "type": "string"
+        },
+        "searchType": {
+          "type": "string"
+        },
+        "siteSearch": {
+          "type": "string"
+        },
+        "siteSearchFilter": {
+          "type": "string"
+        },
+        "sort": {
+          "type": "string"
+        },
+        "startIndex": {
+          "format": "int32",
+          "type": "integer"
+        },
+        "startPage": {
+          "format": "int32",
+          "type": "integer"
+        },
+        "title": {
+          "type": "string"
+        },
+        "totalResults": {
+          "format": "int64",
           "type": "string"
         }
       },
       "type": "object"
     },
     "Result": {
-      "description": "A custom search result.",
       "id": "Result",
       "properties": {
         "cacheId": {
-          "description": "Indicates the ID of Google's cached version of the search result.",
           "type": "string"
         },
         "displayLink": {
-          "description": "An abridged version of this search result’s URL, e.g. www.example.com.",
           "type": "string"
         },
         "fileFormat": {
-          "description": "The file format of the search result.",
           "type": "string"
         },
         "formattedUrl": {
-          "description": "The URL displayed after the snippet for each search result.",
           "type": "string"
         },
         "htmlFormattedUrl": {
-          "description": "The HTML-formatted URL displayed after the snippet for each search result.",
           "type": "string"
         },
         "htmlSnippet": {
-          "description": "The snippet of the search result, in HTML.",
           "type": "string"
         },
         "htmlTitle": {
-          "description": "The title of the search result, in HTML.",
           "type": "string"
         },
         "image": {
-          "description": "Image belonging to a custom search result.",
           "properties": {
             "byteSize": {
-              "description": "The size of the image, in pixels.",
               "format": "int32",
               "type": "integer"
             },
             "contextLink": {
-              "description": "A URL pointing to the webpage hosting the image.",
               "type": "string"
             },
             "height": {
-              "description": "The height of the image, in pixels.",
               "format": "int32",
               "type": "integer"
             },
             "thumbnailHeight": {
-              "description": "The height of the thumbnail image, in pixels.",
               "format": "int32",
               "type": "integer"
             },
             "thumbnailLink": {
-              "description": "A URL to the thumbnail image.",
               "type": "string"
             },
             "thumbnailWidth": {
-              "description": "The width of the thumbnail image, in pixels.",
               "format": "int32",
               "type": "integer"
             },
             "width": {
-              "description": "The width of the image, in pixels.",
               "format": "int32",
               "type": "integer"
             }
@@ -701,24 +1035,19 @@
           "type": "object"
         },
         "kind": {
-          "description": "A unique identifier for the type of current object. For this API, it is\n`customsearch#result.`",
+          "default": "customsearch#result",
           "type": "string"
         },
         "labels": {
-          "description": "Encapsulates all information about [refinement\nlabels](https://developers.google.com/custom-search/docs/xml_results).",
           "items": {
-            "description": "Refinement label associated with a custom search result.",
             "properties": {
               "displayName": {
-                "description": "The display name of a refinement label. This is the name you should\ndisplay in your user interface.",
                 "type": "string"
               },
               "label_with_op": {
-                "description": "Refinement label and the associated refinement operation.",
                 "type": "string"
               },
               "name": {
-                "description": "The name of a refinement label, which you can use to refine searches.\nDon't display this in your user interface; instead, use displayName.",
                 "type": "string"
               }
             },
@@ -727,588 +1056,101 @@
           "type": "array"
         },
         "link": {
-          "description": "The full URL to which the search result is pointing, e.g.\nhttp://www.example.com/foo/bar.",
           "type": "string"
         },
         "mime": {
-          "description": "The MIME type of the search result.",
           "type": "string"
         },
         "pagemap": {
           "additionalProperties": {
-            "description": "Properties of the object.",
-            "type": "any"
+            "items": {
+              "additionalProperties": {
+                "type": "any"
+              },
+              "type": "object"
+            },
+            "type": "array"
           },
-          "description": "Contains\n[PageMap](https://developers.google.com/custom-search/docs/structured_data#pagemaps)\ninformation for this search result.",
           "type": "object"
         },
         "snippet": {
-          "description": "The snippet of the search result, in plain text.",
           "type": "string"
         },
         "title": {
-          "description": "The title of the search result, in plain text.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "Search": {
-      "description": "Response to a custom search request.",
       "id": "Search",
       "properties": {
         "context": {
-          "additionalProperties": {
-            "description": "Properties of the object.",
-            "type": "any"
-          },
-          "description": "Metadata and refinements associated with the given search engine,\nincluding:\n\n* The name of the search engine that was used for the query.\n\n*   A set of [facet\nobjects](https://developers.google.com/custom-search/docs/refinements#create)\n(refinements) you can use for refining a search.",
-          "type": "object"
+          "$ref": "Context"
         },
         "items": {
-          "description": "The current set of custom search results.",
           "items": {
             "$ref": "Result"
           },
           "type": "array"
         },
         "kind": {
-          "description": "Unique identifier for the type of current object. For this API, it is\ncustomsearch#search.",
+          "default": "customsearch#search",
           "type": "string"
         },
         "promotions": {
-          "description": "The set of\n[promotions](https://developers.google.com/custom-search/docs/promotions).\nPresent only if the custom search engine's configuration files define any\npromotions for the given query.",
           "items": {
             "$ref": "Promotion"
           },
           "type": "array"
         },
         "queries": {
-          "description": "Query metadata for the previous, current, and next pages of results.",
-          "properties": {
-            "nextPage": {
-              "description": "Metadata representing the next page of results, if applicable.",
-              "items": {
-                "description": "Custom search request metadata.",
-                "properties": {
-                  "count": {
-                    "description": "Number of search results returned in this set.",
-                    "format": "int32",
-                    "type": "integer"
-                  },
-                  "cr": {
-                    "description": "Restricts search results to documents originating in a particular\ncountry. You may use [Boolean\noperators](https://developers.google.com/custom-search/docs/xml_results#booleanOperators)\nin the `cr` parameter's value.\n\nGoogle WebSearch determines the country of a document by analyzing the\nfollowing:\n\n* The top-level domain (TLD) of the document's URL.\n\n* The geographic location of the web server's IP address.\n\nSee [Country (cr) Parameter\nValues](https://developers.google.com/custom-search/docs/xml_results#countryCollections)\nfor a list of valid values for this parameter.",
-                    "type": "string"
-                  },
-                  "cx": {
-                    "description": "The identifier of a custom search engine created using the Custom Search\n[Control Panel](https://cse.google.com/). This is a custom property not\ndefined in the OpenSearch spec. This parameter is **required**.",
-                    "type": "string"
-                  },
-                  "dateRestrict": {
-                    "description": "Restricts results to URLs based on date. Supported values include:\n\n* `d[number]`: requests results from the specified number of past days.\n\n* `w[number]`: requests results from the specified number of past weeks.\n\n* `m[number]`: requests results from the specified number of past months.\n\n* `y[number]`: requests results from the specified number of past years.",
-                    "type": "string"
-                  },
-                  "disableCnTwTranslation": {
-                    "description": "Enables or disables the [Simplified and Traditional Chinese\nSearch](https://developers.google.com/custom-search/docs/xml_results#chineseSearch)\nfeature.\n\nSupported values are:\n\n* `0`: enabled (default)\n\n* `1`: disabled",
-                    "type": "string"
-                  },
-                  "exactTerms": {
-                    "description": "Identifies a phrase that all documents in the search results must\ncontain.",
-                    "type": "string"
-                  },
-                  "excludeTerms": {
-                    "description": "Identifies a word or phrase that should not appear in any documents in\nthe search results.",
-                    "type": "string"
-                  },
-                  "fileType": {
-                    "description": "Restricts results to files of a specified extension. Filetypes supported\nby Google include:\n\n* Adobe Portable Document Format (`pdf`)\n\n* Adobe PostScript (`ps`)\n\n* Lotus 1-2-3 (`wk1`, `wk2`, `wk3`, `wk4`, `wk5`, `wki`, `wks`, `wku`)\n\n* Lotus WordPro (`lwp`)\n\n* Macwrite (`mw`)\n\n* Microsoft Excel (`xls`)\n\n* Microsoft PowerPoint (`ppt`)\n\n* Microsoft Word (`doc`)\n\n* Microsoft Works (`wks`, `wps`, `wdb`)\n\n* Microsoft Write (`wri`)\n\n* Rich Text Format (`rtf`)\n\n* Shockwave Flash (`swf`)\n\n* Text (`ans`, `txt`).\n\nAdditional filetypes may be added in the future. An up-to-date list can\nalways be found in Google's [file type\nFAQ](https://support.google.com/webmasters/answer/35287).",
-                    "type": "string"
-                  },
-                  "filter": {
-                    "description": "Activates or deactivates the automatic filtering of Google search\nresults. See [Automatic\nFiltering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering)\nfor more information about Google's search results filters. Valid values\nfor this parameter are:\n\n* `0`: Disabled\n\n* `1`: Enabled (default)\n\n**Note**: By default, Google applies filtering to all search results to\nimprove the quality of those results.",
-                    "type": "string"
-                  },
-                  "gl": {
-                    "description": "Boosts search results whose country of origin matches the parameter\nvalue. See [Country\nCodes](https://developers.google.com/custom-search/docs/xml_results#countryCodes)\nfor a list of valid values.\n\nSpecifying a `gl` parameter value in WebSearch requests should improve\nthe relevance of results. This is particularly true for international\ncustomers and, even more specifically, for customers in English-speaking\ncountries other than the United States.",
-                    "type": "string"
-                  },
-                  "googleHost": {
-                    "description": "Specifies the Google domain (for example, google.com, google.de, or\ngoogle.fr) to which the search should be limited.",
-                    "type": "string"
-                  },
-                  "highRange": {
-                    "description": "Specifies the ending value for a search range. Use `cse:lowRange` and\n`cse:highrange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
-                    "type": "string"
-                  },
-                  "hl": {
-                    "description": "Specifies the interface language (host language) of your user interface.\nExplicitly setting this parameter improves the performance and the\nquality of your search results.\n\nSee the [Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages)\nsection of [Internationalizing Queries and Results\nPresentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing)\nfor more information, and [Supported Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages)\nfor a list of supported languages.",
-                    "type": "string"
-                  },
-                  "hq": {
-                    "description": "Appends the specified query terms to the query, as if they were combined\nwith a logical `AND` operator.",
-                    "type": "string"
-                  },
-                  "imgColorType": {
-                    "description": "Restricts results to images of a specified color type. Supported values\n  are:\n\n* `mono` (black and white)\n\n* `gray` (grayscale)\n\n* `color` (color)",
-                    "type": "string"
-                  },
-                  "imgDominantColor": {
-                    "description": "Restricts results to images with a specific dominant color. Supported\nvalues are:\n\n* `red`\n\n* `orange`\n\n* `yellow`\n\n* `green`\n\n* `teal`\n\n* `blue`\n\n* `purple`\n\n* `pink`\n\n* `white`\n\n* `gray`\n\n* `black`\n\n* `brown`",
-                    "type": "string"
-                  },
-                  "imgSize": {
-                    "description": "Restricts results to images of a specified size. Supported values are:\n\n* `icon` (small)\n\n* `small | medium | large | xlarge` (medium)\n\n* `xxlarge` (large)\n\n* `huge` (extra-large)",
-                    "type": "string"
-                  },
-                  "imgType": {
-                    "description": "Restricts results to images of a specified type. Supported values are:\n\n* `clipart` (Clip art)\n\n* `face` (Face)\n\n* `lineart` (Line drawing)\n\n* `photo` (Photo)\n\n* `animated` (Animated)\n\n* `stock` (Stock)",
-                    "type": "string"
-                  },
-                  "inputEncoding": {
-                    "description": "The character encoding supported for search requests.",
-                    "type": "string"
-                  },
-                  "language": {
-                    "description": "The language of the search results.",
-                    "type": "string"
-                  },
-                  "linkSite": {
-                    "description": "Specifies that all results should contain a link to a specific URL.",
-                    "type": "string"
-                  },
-                  "lowRange": {
-                    "description": "Specifies the starting value for a search range. Use `cse:lowRange` and\n`cse:highrange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
-                    "type": "string"
-                  },
-                  "orTerms": {
-                    "description": "Provides additional search terms to check for in a document, where each\ndocument in the search results must contain at least one of the\nadditional search terms. You can also use the [Boolean\nOR](https://developers.google.com/custom-search/docs/xml_results#BooleanOrqt)\nquery term for this type of query.",
-                    "type": "string"
-                  },
-                  "outputEncoding": {
-                    "description": "The character encoding supported for search results.",
-                    "type": "string"
-                  },
-                  "relatedSite": {
-                    "description": "Specifies that all search results should be pages that are related to the\nspecified URL. The parameter value should be a URL.",
-                    "type": "string"
-                  },
-                  "rights": {
-                    "description": "Filters based on licensing. Supported values include:\n\n* `cc_publicdomain`\n\n* `cc_attribute`\n\n* `cc_sharealike`\n\n* `cc_noncommercial`\n\n* `cc_nonderived`",
-                    "type": "string"
-                  },
-                  "safe": {
-                    "description": "Specifies the [SafeSearch\nlevel](https://developers.google.com/custom-search/docs/xml_results#safeSearchLevels)\nused for filtering out adult results. This is a custom property not\ndefined in the OpenSearch spec. Valid parameter values are:\n\n* `\"off\"`: Disable SafeSearch\n\n* `\"active\"`: Enable SafeSearch",
-                    "type": "string"
-                  },
-                  "searchTerms": {
-                    "description": "The search terms entered by the user.",
-                    "type": "string"
-                  },
-                  "searchType": {
-                    "description": "Allowed values are `web` or `image`. If unspecified, results are limited\nto webpages.",
-                    "type": "string"
-                  },
-                  "siteSearch": {
-                    "description": "Restricts results to URLs from a specified site.",
-                    "type": "string"
-                  },
-                  "siteSearchFilter": {
-                    "description": "Specifies whether to include or exclude results from the site named in\nthe `sitesearch` parameter. Supported values are:\n\n* `i`: include content from site\n\n* `e`: exclude content from site",
-                    "type": "string"
-                  },
-                  "sort": {
-                    "description": "Specifies that results should be sorted according to the specified\nexpression. For example, sort by date.",
-                    "type": "string"
-                  },
-                  "startIndex": {
-                    "description": "The index of the current set of search results into the total set of\nresults, where the index of the first result is 1.",
-                    "format": "int32",
-                    "type": "integer"
-                  },
-                  "startPage": {
-                    "description": "The page number of this set of results, where the page length is set by\nthe `count` property.",
-                    "format": "int32",
-                    "type": "integer"
-                  },
-                  "title": {
-                    "description": "A description of the query.",
-                    "type": "string"
-                  },
-                  "totalResults": {
-                    "description": "Estimated number of total search results. May not be accurate.",
-                    "format": "int64",
-                    "type": "string"
-                  }
-                },
-                "type": "object"
-              },
-              "type": "array"
+          "additionalProperties": {
+            "items": {
+              "$ref": "Query"
             },
-            "previousPage": {
-              "description": "Metadata representing the previous page of results, if applicable.",
-              "items": {
-                "description": "Custom search request metadata.",
-                "properties": {
-                  "count": {
-                    "description": "Number of search results returned in this set.",
-                    "format": "int32",
-                    "type": "integer"
-                  },
-                  "cr": {
-                    "description": "Restricts search results to documents originating in a particular\ncountry. You may use [Boolean\noperators](https://developers.google.com/custom-search/docs/xml_results#booleanOperators)\nin the `cr` parameter's value.\n\nGoogle WebSearch determines the country of a document by analyzing the\nfollowing:\n\n* The top-level domain (TLD) of the document's URL.\n\n* The geographic location of the web server's IP address.\n\nSee [Country (cr) Parameter\nValues](https://developers.google.com/custom-search/docs/xml_results#countryCollections)\nfor a list of valid values for this parameter.",
-                    "type": "string"
-                  },
-                  "cx": {
-                    "description": "The identifier of a custom search engine created using the Custom Search\n[Control Panel](https://cse.google.com/). This is a custom property not\ndefined in the OpenSearch spec. This parameter is **required**.",
-                    "type": "string"
-                  },
-                  "dateRestrict": {
-                    "description": "Restricts results to URLs based on date. Supported values include:\n\n* `d[number]`: requests results from the specified number of past days.\n\n* `w[number]`: requests results from the specified number of past weeks.\n\n* `m[number]`: requests results from the specified number of past months.\n\n* `y[number]`: requests results from the specified number of past years.",
-                    "type": "string"
-                  },
-                  "disableCnTwTranslation": {
-                    "description": "Enables or disables the [Simplified and Traditional Chinese\nSearch](https://developers.google.com/custom-search/docs/xml_results#chineseSearch)\nfeature.\n\nSupported values are:\n\n* `0`: enabled (default)\n\n* `1`: disabled",
-                    "type": "string"
-                  },
-                  "exactTerms": {
-                    "description": "Identifies a phrase that all documents in the search results must\ncontain.",
-                    "type": "string"
-                  },
-                  "excludeTerms": {
-                    "description": "Identifies a word or phrase that should not appear in any documents in\nthe search results.",
-                    "type": "string"
-                  },
-                  "fileType": {
-                    "description": "Restricts results to files of a specified extension. Filetypes supported\nby Google include:\n\n* Adobe Portable Document Format (`pdf`)\n\n* Adobe PostScript (`ps`)\n\n* Lotus 1-2-3 (`wk1`, `wk2`, `wk3`, `wk4`, `wk5`, `wki`, `wks`, `wku`)\n\n* Lotus WordPro (`lwp`)\n\n* Macwrite (`mw`)\n\n* Microsoft Excel (`xls`)\n\n* Microsoft PowerPoint (`ppt`)\n\n* Microsoft Word (`doc`)\n\n* Microsoft Works (`wks`, `wps`, `wdb`)\n\n* Microsoft Write (`wri`)\n\n* Rich Text Format (`rtf`)\n\n* Shockwave Flash (`swf`)\n\n* Text (`ans`, `txt`).\n\nAdditional filetypes may be added in the future. An up-to-date list can\nalways be found in Google's [file type\nFAQ](https://support.google.com/webmasters/answer/35287).",
-                    "type": "string"
-                  },
-                  "filter": {
-                    "description": "Activates or deactivates the automatic filtering of Google search\nresults. See [Automatic\nFiltering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering)\nfor more information about Google's search results filters. Valid values\nfor this parameter are:\n\n* `0`: Disabled\n\n* `1`: Enabled (default)\n\n**Note**: By default, Google applies filtering to all search results to\nimprove the quality of those results.",
-                    "type": "string"
-                  },
-                  "gl": {
-                    "description": "Boosts search results whose country of origin matches the parameter\nvalue. See [Country\nCodes](https://developers.google.com/custom-search/docs/xml_results#countryCodes)\nfor a list of valid values.\n\nSpecifying a `gl` parameter value in WebSearch requests should improve\nthe relevance of results. This is particularly true for international\ncustomers and, even more specifically, for customers in English-speaking\ncountries other than the United States.",
-                    "type": "string"
-                  },
-                  "googleHost": {
-                    "description": "Specifies the Google domain (for example, google.com, google.de, or\ngoogle.fr) to which the search should be limited.",
-                    "type": "string"
-                  },
-                  "highRange": {
-                    "description": "Specifies the ending value for a search range. Use `cse:lowRange` and\n`cse:highrange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
-                    "type": "string"
-                  },
-                  "hl": {
-                    "description": "Specifies the interface language (host language) of your user interface.\nExplicitly setting this parameter improves the performance and the\nquality of your search results.\n\nSee the [Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages)\nsection of [Internationalizing Queries and Results\nPresentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing)\nfor more information, and [Supported Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages)\nfor a list of supported languages.",
-                    "type": "string"
-                  },
-                  "hq": {
-                    "description": "Appends the specified query terms to the query, as if they were combined\nwith a logical `AND` operator.",
-                    "type": "string"
-                  },
-                  "imgColorType": {
-                    "description": "Restricts results to images of a specified color type. Supported values\n  are:\n\n* `mono` (black and white)\n\n* `gray` (grayscale)\n\n* `color` (color)",
-                    "type": "string"
-                  },
-                  "imgDominantColor": {
-                    "description": "Restricts results to images with a specific dominant color. Supported\nvalues are:\n\n* `red`\n\n* `orange`\n\n* `yellow`\n\n* `green`\n\n* `teal`\n\n* `blue`\n\n* `purple`\n\n* `pink`\n\n* `white`\n\n* `gray`\n\n* `black`\n\n* `brown`",
-                    "type": "string"
-                  },
-                  "imgSize": {
-                    "description": "Restricts results to images of a specified size. Supported values are:\n\n* `icon` (small)\n\n* `small | medium | large | xlarge` (medium)\n\n* `xxlarge` (large)\n\n* `huge` (extra-large)",
-                    "type": "string"
-                  },
-                  "imgType": {
-                    "description": "Restricts results to images of a specified type. Supported values are:\n\n* `clipart` (Clip art)\n\n* `face` (Face)\n\n* `lineart` (Line drawing)\n\n* `photo` (Photo)\n\n* `animated` (Animated)\n\n* `stock` (Stock)",
-                    "type": "string"
-                  },
-                  "inputEncoding": {
-                    "description": "The character encoding supported for search requests.",
-                    "type": "string"
-                  },
-                  "language": {
-                    "description": "The language of the search results.",
-                    "type": "string"
-                  },
-                  "linkSite": {
-                    "description": "Specifies that all results should contain a link to a specific URL.",
-                    "type": "string"
-                  },
-                  "lowRange": {
-                    "description": "Specifies the starting value for a search range. Use `cse:lowRange` and\n`cse:highrange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
-                    "type": "string"
-                  },
-                  "orTerms": {
-                    "description": "Provides additional search terms to check for in a document, where each\ndocument in the search results must contain at least one of the\nadditional search terms. You can also use the [Boolean\nOR](https://developers.google.com/custom-search/docs/xml_results#BooleanOrqt)\nquery term for this type of query.",
-                    "type": "string"
-                  },
-                  "outputEncoding": {
-                    "description": "The character encoding supported for search results.",
-                    "type": "string"
-                  },
-                  "relatedSite": {
-                    "description": "Specifies that all search results should be pages that are related to the\nspecified URL. The parameter value should be a URL.",
-                    "type": "string"
-                  },
-                  "rights": {
-                    "description": "Filters based on licensing. Supported values include:\n\n* `cc_publicdomain`\n\n* `cc_attribute`\n\n* `cc_sharealike`\n\n* `cc_noncommercial`\n\n* `cc_nonderived`",
-                    "type": "string"
-                  },
-                  "safe": {
-                    "description": "Specifies the [SafeSearch\nlevel](https://developers.google.com/custom-search/docs/xml_results#safeSearchLevels)\nused for filtering out adult results. This is a custom property not\ndefined in the OpenSearch spec. Valid parameter values are:\n\n* `\"off\"`: Disable SafeSearch\n\n* `\"active\"`: Enable SafeSearch",
-                    "type": "string"
-                  },
-                  "searchTerms": {
-                    "description": "The search terms entered by the user.",
-                    "type": "string"
-                  },
-                  "searchType": {
-                    "description": "Allowed values are `web` or `image`. If unspecified, results are limited\nto webpages.",
-                    "type": "string"
-                  },
-                  "siteSearch": {
-                    "description": "Restricts results to URLs from a specified site.",
-                    "type": "string"
-                  },
-                  "siteSearchFilter": {
-                    "description": "Specifies whether to include or exclude results from the site named in\nthe `sitesearch` parameter. Supported values are:\n\n* `i`: include content from site\n\n* `e`: exclude content from site",
-                    "type": "string"
-                  },
-                  "sort": {
-                    "description": "Specifies that results should be sorted according to the specified\nexpression. For example, sort by date.",
-                    "type": "string"
-                  },
-                  "startIndex": {
-                    "description": "The index of the current set of search results into the total set of\nresults, where the index of the first result is 1.",
-                    "format": "int32",
-                    "type": "integer"
-                  },
-                  "startPage": {
-                    "description": "The page number of this set of results, where the page length is set by\nthe `count` property.",
-                    "format": "int32",
-                    "type": "integer"
-                  },
-                  "title": {
-                    "description": "A description of the query.",
-                    "type": "string"
-                  },
-                  "totalResults": {
-                    "description": "Estimated number of total search results. May not be accurate.",
-                    "format": "int64",
-                    "type": "string"
-                  }
-                },
-                "type": "object"
-              },
-              "type": "array"
-            },
-            "request": {
-              "description": "Metadata representing the current request.",
-              "items": {
-                "description": "Custom search request metadata.",
-                "properties": {
-                  "count": {
-                    "description": "Number of search results returned in this set.",
-                    "format": "int32",
-                    "type": "integer"
-                  },
-                  "cr": {
-                    "description": "Restricts search results to documents originating in a particular\ncountry. You may use [Boolean\noperators](https://developers.google.com/custom-search/docs/xml_results#booleanOperators)\nin the `cr` parameter's value.\n\nGoogle WebSearch determines the country of a document by analyzing the\nfollowing:\n\n* The top-level domain (TLD) of the document's URL.\n\n* The geographic location of the web server's IP address.\n\nSee [Country (cr) Parameter\nValues](https://developers.google.com/custom-search/docs/xml_results#countryCollections)\nfor a list of valid values for this parameter.",
-                    "type": "string"
-                  },
-                  "cx": {
-                    "description": "The identifier of a custom search engine created using the Custom Search\n[Control Panel](https://cse.google.com/). This is a custom property not\ndefined in the OpenSearch spec. This parameter is **required**.",
-                    "type": "string"
-                  },
-                  "dateRestrict": {
-                    "description": "Restricts results to URLs based on date. Supported values include:\n\n* `d[number]`: requests results from the specified number of past days.\n\n* `w[number]`: requests results from the specified number of past weeks.\n\n* `m[number]`: requests results from the specified number of past months.\n\n* `y[number]`: requests results from the specified number of past years.",
-                    "type": "string"
-                  },
-                  "disableCnTwTranslation": {
-                    "description": "Enables or disables the [Simplified and Traditional Chinese\nSearch](https://developers.google.com/custom-search/docs/xml_results#chineseSearch)\nfeature.\n\nSupported values are:\n\n* `0`: enabled (default)\n\n* `1`: disabled",
-                    "type": "string"
-                  },
-                  "exactTerms": {
-                    "description": "Identifies a phrase that all documents in the search results must\ncontain.",
-                    "type": "string"
-                  },
-                  "excludeTerms": {
-                    "description": "Identifies a word or phrase that should not appear in any documents in\nthe search results.",
-                    "type": "string"
-                  },
-                  "fileType": {
-                    "description": "Restricts results to files of a specified extension. Filetypes supported\nby Google include:\n\n* Adobe Portable Document Format (`pdf`)\n\n* Adobe PostScript (`ps`)\n\n* Lotus 1-2-3 (`wk1`, `wk2`, `wk3`, `wk4`, `wk5`, `wki`, `wks`, `wku`)\n\n* Lotus WordPro (`lwp`)\n\n* Macwrite (`mw`)\n\n* Microsoft Excel (`xls`)\n\n* Microsoft PowerPoint (`ppt`)\n\n* Microsoft Word (`doc`)\n\n* Microsoft Works (`wks`, `wps`, `wdb`)\n\n* Microsoft Write (`wri`)\n\n* Rich Text Format (`rtf`)\n\n* Shockwave Flash (`swf`)\n\n* Text (`ans`, `txt`).\n\nAdditional filetypes may be added in the future. An up-to-date list can\nalways be found in Google's [file type\nFAQ](https://support.google.com/webmasters/answer/35287).",
-                    "type": "string"
-                  },
-                  "filter": {
-                    "description": "Activates or deactivates the automatic filtering of Google search\nresults. See [Automatic\nFiltering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering)\nfor more information about Google's search results filters. Valid values\nfor this parameter are:\n\n* `0`: Disabled\n\n* `1`: Enabled (default)\n\n**Note**: By default, Google applies filtering to all search results to\nimprove the quality of those results.",
-                    "type": "string"
-                  },
-                  "gl": {
-                    "description": "Boosts search results whose country of origin matches the parameter\nvalue. See [Country\nCodes](https://developers.google.com/custom-search/docs/xml_results#countryCodes)\nfor a list of valid values.\n\nSpecifying a `gl` parameter value in WebSearch requests should improve\nthe relevance of results. This is particularly true for international\ncustomers and, even more specifically, for customers in English-speaking\ncountries other than the United States.",
-                    "type": "string"
-                  },
-                  "googleHost": {
-                    "description": "Specifies the Google domain (for example, google.com, google.de, or\ngoogle.fr) to which the search should be limited.",
-                    "type": "string"
-                  },
-                  "highRange": {
-                    "description": "Specifies the ending value for a search range. Use `cse:lowRange` and\n`cse:highrange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
-                    "type": "string"
-                  },
-                  "hl": {
-                    "description": "Specifies the interface language (host language) of your user interface.\nExplicitly setting this parameter improves the performance and the\nquality of your search results.\n\nSee the [Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages)\nsection of [Internationalizing Queries and Results\nPresentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing)\nfor more information, and [Supported Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages)\nfor a list of supported languages.",
-                    "type": "string"
-                  },
-                  "hq": {
-                    "description": "Appends the specified query terms to the query, as if they were combined\nwith a logical `AND` operator.",
-                    "type": "string"
-                  },
-                  "imgColorType": {
-                    "description": "Restricts results to images of a specified color type. Supported values\n  are:\n\n* `mono` (black and white)\n\n* `gray` (grayscale)\n\n* `color` (color)",
-                    "type": "string"
-                  },
-                  "imgDominantColor": {
-                    "description": "Restricts results to images with a specific dominant color. Supported\nvalues are:\n\n* `red`\n\n* `orange`\n\n* `yellow`\n\n* `green`\n\n* `teal`\n\n* `blue`\n\n* `purple`\n\n* `pink`\n\n* `white`\n\n* `gray`\n\n* `black`\n\n* `brown`",
-                    "type": "string"
-                  },
-                  "imgSize": {
-                    "description": "Restricts results to images of a specified size. Supported values are:\n\n* `icon` (small)\n\n* `small | medium | large | xlarge` (medium)\n\n* `xxlarge` (large)\n\n* `huge` (extra-large)",
-                    "type": "string"
-                  },
-                  "imgType": {
-                    "description": "Restricts results to images of a specified type. Supported values are:\n\n* `clipart` (Clip art)\n\n* `face` (Face)\n\n* `lineart` (Line drawing)\n\n* `photo` (Photo)\n\n* `animated` (Animated)\n\n* `stock` (Stock)",
-                    "type": "string"
-                  },
-                  "inputEncoding": {
-                    "description": "The character encoding supported for search requests.",
-                    "type": "string"
-                  },
-                  "language": {
-                    "description": "The language of the search results.",
-                    "type": "string"
-                  },
-                  "linkSite": {
-                    "description": "Specifies that all results should contain a link to a specific URL.",
-                    "type": "string"
-                  },
-                  "lowRange": {
-                    "description": "Specifies the starting value for a search range. Use `cse:lowRange` and\n`cse:highrange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
-                    "type": "string"
-                  },
-                  "orTerms": {
-                    "description": "Provides additional search terms to check for in a document, where each\ndocument in the search results must contain at least one of the\nadditional search terms. You can also use the [Boolean\nOR](https://developers.google.com/custom-search/docs/xml_results#BooleanOrqt)\nquery term for this type of query.",
-                    "type": "string"
-                  },
-                  "outputEncoding": {
-                    "description": "The character encoding supported for search results.",
-                    "type": "string"
-                  },
-                  "relatedSite": {
-                    "description": "Specifies that all search results should be pages that are related to the\nspecified URL. The parameter value should be a URL.",
-                    "type": "string"
-                  },
-                  "rights": {
-                    "description": "Filters based on licensing. Supported values include:\n\n* `cc_publicdomain`\n\n* `cc_attribute`\n\n* `cc_sharealike`\n\n* `cc_noncommercial`\n\n* `cc_nonderived`",
-                    "type": "string"
-                  },
-                  "safe": {
-                    "description": "Specifies the [SafeSearch\nlevel](https://developers.google.com/custom-search/docs/xml_results#safeSearchLevels)\nused for filtering out adult results. This is a custom property not\ndefined in the OpenSearch spec. Valid parameter values are:\n\n* `\"off\"`: Disable SafeSearch\n\n* `\"active\"`: Enable SafeSearch",
-                    "type": "string"
-                  },
-                  "searchTerms": {
-                    "description": "The search terms entered by the user.",
-                    "type": "string"
-                  },
-                  "searchType": {
-                    "description": "Allowed values are `web` or `image`. If unspecified, results are limited\nto webpages.",
-                    "type": "string"
-                  },
-                  "siteSearch": {
-                    "description": "Restricts results to URLs from a specified site.",
-                    "type": "string"
-                  },
-                  "siteSearchFilter": {
-                    "description": "Specifies whether to include or exclude results from the site named in\nthe `sitesearch` parameter. Supported values are:\n\n* `i`: include content from site\n\n* `e`: exclude content from site",
-                    "type": "string"
-                  },
-                  "sort": {
-                    "description": "Specifies that results should be sorted according to the specified\nexpression. For example, sort by date.",
-                    "type": "string"
-                  },
-                  "startIndex": {
-                    "description": "The index of the current set of search results into the total set of\nresults, where the index of the first result is 1.",
-                    "format": "int32",
-                    "type": "integer"
-                  },
-                  "startPage": {
-                    "description": "The page number of this set of results, where the page length is set by\nthe `count` property.",
-                    "format": "int32",
-                    "type": "integer"
-                  },
-                  "title": {
-                    "description": "A description of the query.",
-                    "type": "string"
-                  },
-                  "totalResults": {
-                    "description": "Estimated number of total search results. May not be accurate.",
-                    "format": "int64",
-                    "type": "string"
-                  }
-                },
-                "type": "object"
-              },
-              "type": "array"
-            }
+            "type": "array"
           },
           "type": "object"
         },
         "searchInformation": {
-          "description": "Metadata about a search operation.",
           "properties": {
             "formattedSearchTime": {
-              "description": "The time taken for the server to return search results, formatted\naccording to locale style.",
               "type": "string"
             },
             "formattedTotalResults": {
-              "description": "The total number of search results, formatted according to locale style.",
               "type": "string"
             },
             "searchTime": {
-              "description": "The time taken for the server to return search results.",
               "format": "double",
               "type": "number"
             },
             "totalResults": {
-              "description": "The total number of search results returned by the query.",
+              "format": "int64",
               "type": "string"
             }
           },
           "type": "object"
         },
         "spelling": {
-          "description": "Spell correction information for a query.",
           "properties": {
             "correctedQuery": {
-              "description": "The corrected query.",
               "type": "string"
             },
             "htmlCorrectedQuery": {
-              "description": "The corrected query, formatted in HTML.",
               "type": "string"
             }
           },
           "type": "object"
         },
         "url": {
-          "description": "OpenSearch template and URL.",
           "properties": {
             "template": {
-              "description": "The actual [OpenSearch\ntemplate](http://www.opensearch.org/specifications/opensearch/1.1#opensearch_url_template_syntax)\nfor this API.",
+              "default": "https://www.googleapis.com/customsearch/v1?q={searchTerms}\u0026num={count?}\u0026start={startIndex?}\u0026lr={language?}\u0026safe={safe?}\u0026cx={cx?}\u0026sort={sort?}\u0026filter={filter?}\u0026gl={gl?}\u0026cr={cr?}\u0026googlehost={googleHost?}\u0026c2coff={disableCnTwTranslation?}\u0026hq={hq?}\u0026hl={hl?}\u0026siteSearch={siteSearch?}\u0026siteSearchFilter={siteSearchFilter?}\u0026exactTerms={exactTerms?}\u0026excludeTerms={excludeTerms?}\u0026linkSite={linkSite?}\u0026orTerms={orTerms?}\u0026relatedSite={relatedSite?}\u0026dateRestrict={dateRestrict?}\u0026lowRange={lowRange?}\u0026highRange={highRange?}\u0026searchType={searchType}\u0026fileType={fileType?}\u0026rights={rights?}\u0026imgSize={imgSize?}\u0026imgType={imgType?}\u0026imgColorType={imgColorType?}\u0026imgDominantColor={imgDominantColor?}\u0026alt=json",
               "type": "string"
             },
             "type": {
-              "description": "The MIME type of the OpenSearch URL template for the Custom Search API.",
+              "default": "application/json",
               "type": "string"
             }
           },
@@ -1318,8 +1160,7 @@
       "type": "object"
     }
   },
-  "servicePath": "",
-  "title": "Custom Search API",
-  "version": "v1",
-  "version_module": true
+  "servicePath": "customsearch/",
+  "title": "CustomSearch API",
+  "version": "v1"
 }
\ No newline at end of file
diff --git a/customsearch/v1/customsearch-gen.go b/customsearch/v1/customsearch-gen.go
index 28e0785..4aac1a9 100644
--- a/customsearch/v1/customsearch-gen.go
+++ b/customsearch/v1/customsearch-gen.go
@@ -4,9 +4,9 @@
 
 // Code generated file. DO NOT EDIT.
 
-// Package customsearch provides access to the Custom Search API.
+// Package customsearch provides access to the CustomSearch API.
 //
-// For product documentation, see: https://developers.google.com/custom-search/v1/introduction
+// For product documentation, see: https://developers.google.com/custom-search/v1/using_rest
 //
 // Creating a client
 //
@@ -74,7 +74,7 @@
 const apiId = "customsearch:v1"
 const apiName = "customsearch"
 const apiVersion = "v1"
-const basePath = "https://customsearch.googleapis.com/"
+const basePath = "https://www.googleapis.com/customsearch/"
 
 // NewService creates a new Service.
 func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
@@ -104,7 +104,6 @@
 	}
 	s := &Service{client: client, BasePath: basePath}
 	s.Cse = NewCseService(s)
-	s.Siterestrict = NewSiterestrictService(s)
 	return s, nil
 }
 
@@ -114,8 +113,6 @@
 	UserAgent string // optional additional User-Agent fragment
 
 	Cse *CseService
-
-	Siterestrict *SiterestrictService
 }
 
 func (s *Service) userAgent() string {
@@ -127,46 +124,94 @@
 
 func NewCseService(s *Service) *CseService {
 	rs := &CseService{s: s}
+	rs.Siterestrict = NewCseSiterestrictService(s)
 	return rs
 }
 
 type CseService struct {
 	s *Service
+
+	Siterestrict *CseSiterestrictService
 }
 
-func NewSiterestrictService(s *Service) *SiterestrictService {
-	rs := &SiterestrictService{s: s}
+func NewCseSiterestrictService(s *Service) *CseSiterestrictService {
+	rs := &CseSiterestrictService{s: s}
 	return rs
 }
 
-type SiterestrictService struct {
+type CseSiterestrictService struct {
 	s *Service
 }
 
-// Promotion: Promotion result.
+type Context struct {
+	Facets [][]*ContextFacetsItem `json:"facets,omitempty"`
+
+	Title string `json:"title,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Facets") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Facets") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Context) MarshalJSON() ([]byte, error) {
+	type NoMethod Context
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type ContextFacetsItem struct {
+	Anchor string `json:"anchor,omitempty"`
+
+	Label string `json:"label,omitempty"`
+
+	LabelWithOp string `json:"label_with_op,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Anchor") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Anchor") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ContextFacetsItem) MarshalJSON() ([]byte, error) {
+	type NoMethod ContextFacetsItem
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type Promotion struct {
-	// BodyLines: An array of block objects for this promotion. See [Google
-	// WebSearch
-	// Protocol
-	// reference](https://developers.google.com/custom-sea
-	// rch/docs/xml_results)
-	// for more information.
 	BodyLines []*PromotionBodyLines `json:"bodyLines,omitempty"`
 
-	// DisplayLink: An abridged version of this search's result URL, e.g.
-	// www.example.com.
 	DisplayLink string `json:"displayLink,omitempty"`
 
-	// HtmlTitle: The title of the promotion, in HTML.
 	HtmlTitle string `json:"htmlTitle,omitempty"`
 
-	// Image: Image belonging to a promotion.
 	Image *PromotionImage `json:"image,omitempty"`
 
-	// Link: The URL of the promotion.
 	Link string `json:"link,omitempty"`
 
-	// Title: The title of the promotion.
 	Title string `json:"title,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "BodyLines") to
@@ -192,18 +237,13 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// PromotionBodyLines: Block object belonging to a promotion.
 type PromotionBodyLines struct {
-	// HtmlTitle: The block object's text in HTML, if it has text.
 	HtmlTitle string `json:"htmlTitle,omitempty"`
 
-	// Link: The anchor text of the block object's link, if it has a link.
 	Link string `json:"link,omitempty"`
 
-	// Title: The block object's text, if it has text.
 	Title string `json:"title,omitempty"`
 
-	// Url: The URL of the block object's link, if it has one.
 	Url string `json:"url,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "HtmlTitle") to
@@ -229,15 +269,11 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// PromotionImage: Image belonging to a promotion.
 type PromotionImage struct {
-	// Height: Image height in pixels.
 	Height int64 `json:"height,omitempty"`
 
-	// Source: URL of the image for this promotion link.
 	Source string `json:"source,omitempty"`
 
-	// Width: Image width in pixels.
 	Width int64 `json:"width,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Height") to
@@ -263,66 +299,131 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Result: A custom search result.
+type Query struct {
+	Count int64 `json:"count,omitempty"`
+
+	Cr string `json:"cr,omitempty"`
+
+	Cx string `json:"cx,omitempty"`
+
+	DateRestrict string `json:"dateRestrict,omitempty"`
+
+	DisableCnTwTranslation string `json:"disableCnTwTranslation,omitempty"`
+
+	ExactTerms string `json:"exactTerms,omitempty"`
+
+	ExcludeTerms string `json:"excludeTerms,omitempty"`
+
+	FileType string `json:"fileType,omitempty"`
+
+	Filter string `json:"filter,omitempty"`
+
+	Gl string `json:"gl,omitempty"`
+
+	GoogleHost string `json:"googleHost,omitempty"`
+
+	HighRange string `json:"highRange,omitempty"`
+
+	Hl string `json:"hl,omitempty"`
+
+	Hq string `json:"hq,omitempty"`
+
+	ImgColorType string `json:"imgColorType,omitempty"`
+
+	ImgDominantColor string `json:"imgDominantColor,omitempty"`
+
+	ImgSize string `json:"imgSize,omitempty"`
+
+	ImgType string `json:"imgType,omitempty"`
+
+	InputEncoding string `json:"inputEncoding,omitempty"`
+
+	Language string `json:"language,omitempty"`
+
+	LinkSite string `json:"linkSite,omitempty"`
+
+	LowRange string `json:"lowRange,omitempty"`
+
+	OrTerms string `json:"orTerms,omitempty"`
+
+	OutputEncoding string `json:"outputEncoding,omitempty"`
+
+	RelatedSite string `json:"relatedSite,omitempty"`
+
+	Rights string `json:"rights,omitempty"`
+
+	Safe string `json:"safe,omitempty"`
+
+	SearchTerms string `json:"searchTerms,omitempty"`
+
+	SearchType string `json:"searchType,omitempty"`
+
+	SiteSearch string `json:"siteSearch,omitempty"`
+
+	SiteSearchFilter string `json:"siteSearchFilter,omitempty"`
+
+	Sort string `json:"sort,omitempty"`
+
+	StartIndex int64 `json:"startIndex,omitempty"`
+
+	StartPage int64 `json:"startPage,omitempty"`
+
+	Title string `json:"title,omitempty"`
+
+	TotalResults int64 `json:"totalResults,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Count") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Count") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Query) MarshalJSON() ([]byte, error) {
+	type NoMethod Query
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type Result struct {
-	// CacheId: Indicates the ID of Google's cached version of the search
-	// result.
 	CacheId string `json:"cacheId,omitempty"`
 
-	// DisplayLink: An abridged version of this search result’s URL, e.g.
-	// www.example.com.
 	DisplayLink string `json:"displayLink,omitempty"`
 
-	// FileFormat: The file format of the search result.
 	FileFormat string `json:"fileFormat,omitempty"`
 
-	// FormattedUrl: The URL displayed after the snippet for each search
-	// result.
 	FormattedUrl string `json:"formattedUrl,omitempty"`
 
-	// HtmlFormattedUrl: The HTML-formatted URL displayed after the snippet
-	// for each search result.
 	HtmlFormattedUrl string `json:"htmlFormattedUrl,omitempty"`
 
-	// HtmlSnippet: The snippet of the search result, in HTML.
 	HtmlSnippet string `json:"htmlSnippet,omitempty"`
 
-	// HtmlTitle: The title of the search result, in HTML.
 	HtmlTitle string `json:"htmlTitle,omitempty"`
 
-	// Image: Image belonging to a custom search result.
 	Image *ResultImage `json:"image,omitempty"`
 
-	// Kind: A unique identifier for the type of current object. For this
-	// API, it is
-	// `customsearch#result.`
 	Kind string `json:"kind,omitempty"`
 
-	// Labels: Encapsulates all information about
-	// [refinement
-	// labels](https://developers.google.com/custom-search/docs/x
-	// ml_results).
 	Labels []*ResultLabels `json:"labels,omitempty"`
 
-	// Link: The full URL to which the search result is pointing,
-	// e.g.
-	// http://www.example.com/foo/bar.
 	Link string `json:"link,omitempty"`
 
-	// Mime: The MIME type of the search result.
 	Mime string `json:"mime,omitempty"`
 
-	// Pagemap:
-	// Contains
-	// [PageMap](https://developers.google.com/custom-search/docs/st
-	// ructured_data#pagemaps)
-	// information for this search result.
-	Pagemap googleapi.RawMessage `json:"pagemap,omitempty"`
+	Pagemap map[string][]googleapi.RawMessage `json:"pagemap,omitempty"`
 
-	// Snippet: The snippet of the search result, in plain text.
 	Snippet string `json:"snippet,omitempty"`
 
-	// Title: The title of the search result, in plain text.
 	Title string `json:"title,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "CacheId") to
@@ -348,27 +449,19 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ResultImage: Image belonging to a custom search result.
 type ResultImage struct {
-	// ByteSize: The size of the image, in pixels.
 	ByteSize int64 `json:"byteSize,omitempty"`
 
-	// ContextLink: A URL pointing to the webpage hosting the image.
 	ContextLink string `json:"contextLink,omitempty"`
 
-	// Height: The height of the image, in pixels.
 	Height int64 `json:"height,omitempty"`
 
-	// ThumbnailHeight: The height of the thumbnail image, in pixels.
 	ThumbnailHeight int64 `json:"thumbnailHeight,omitempty"`
 
-	// ThumbnailLink: A URL to the thumbnail image.
 	ThumbnailLink string `json:"thumbnailLink,omitempty"`
 
-	// ThumbnailWidth: The width of the thumbnail image, in pixels.
 	ThumbnailWidth int64 `json:"thumbnailWidth,omitempty"`
 
-	// Width: The width of the image, in pixels.
 	Width int64 `json:"width,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "ByteSize") to
@@ -394,21 +487,11 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ResultLabels: Refinement label associated with a custom search
-// result.
 type ResultLabels struct {
-	// DisplayName: The display name of a refinement label. This is the name
-	// you should
-	// display in your user interface.
 	DisplayName string `json:"displayName,omitempty"`
 
-	// LabelWithOp: Refinement label and the associated refinement
-	// operation.
 	LabelWithOp string `json:"label_with_op,omitempty"`
 
-	// Name: 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 string `json:"name,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "DisplayName") to
@@ -434,49 +517,21 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Search: Response to a custom search request.
 type Search struct {
-	// Context: 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
-	// [facet
-	// objects](https://developers.google.com/custom-search/docs/refin
-	// ements#create)
-	// (refinements) you can use for refining a search.
-	Context googleapi.RawMessage `json:"context,omitempty"`
+	Context *Context `json:"context,omitempty"`
 
-	// Items: The current set of custom search results.
 	Items []*Result `json:"items,omitempty"`
 
-	// Kind: Unique identifier for the type of current object. For this API,
-	// it is
-	// customsearch#search.
 	Kind string `json:"kind,omitempty"`
 
-	// Promotions: The set
-	// of
-	// [promotions](https://developers.google.com/custom-search/docs/promo
-	// tions).
-	// Present only if the custom search engine's configuration files define
-	// any
-	// promotions for the given query.
 	Promotions []*Promotion `json:"promotions,omitempty"`
 
-	// Queries: Query metadata for the previous, current, and next pages of
-	// results.
-	Queries *SearchQueries `json:"queries,omitempty"`
+	Queries map[string][]Query `json:"queries,omitempty"`
 
-	// SearchInformation: Metadata about a search operation.
 	SearchInformation *SearchSearchInformation `json:"searchInformation,omitempty"`
 
-	// Spelling: Spell correction information for a query.
 	Spelling *SearchSpelling `json:"spelling,omitempty"`
 
-	// Url: OpenSearch template and URL.
 	Url *SearchUrl `json:"url,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -506,1206 +561,14 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// SearchQueries: Query metadata for the previous, current, and next
-// pages of results.
-type SearchQueries struct {
-	// NextPage: Metadata representing the next page of results, if
-	// applicable.
-	NextPage []*SearchQueriesNextPage `json:"nextPage,omitempty"`
-
-	// PreviousPage: Metadata representing the previous page of results, if
-	// applicable.
-	PreviousPage []*SearchQueriesPreviousPage `json:"previousPage,omitempty"`
-
-	// Request: Metadata representing the current request.
-	Request []*SearchQueriesRequest `json:"request,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "NextPage") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "NextPage") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *SearchQueries) MarshalJSON() ([]byte, error) {
-	type NoMethod SearchQueries
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// SearchQueriesNextPage: Custom search request metadata.
-type SearchQueriesNextPage struct {
-	// Count: Number of search results returned in this set.
-	Count int64 `json:"count,omitempty"`
-
-	// Cr: Restricts search results to documents originating in a
-	// particular
-	// country. You may use
-	// [Boolean
-	// operators](https://developers.google.com/custom-search/docs/x
-	// ml_results#booleanOperators)
-	// 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 [Country (cr)
-	// Parameter
-	// Values](https://developers.google.com/custom-search/docs/xml
-	// _results#countryCollections)
-	// for a list of valid values for this parameter.
-	Cr string `json:"cr,omitempty"`
-
-	// Cx: The identifier of a custom search engine created using the Custom
-	// Search
-	// [Control Panel](https://cse.google.com/). This is a custom property
-	// not
-	// defined in the OpenSearch spec. This parameter is **required**.
-	Cx string `json:"cx,omitempty"`
-
-	// DateRestrict: 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 string `json:"dateRestrict,omitempty"`
-
-	// DisableCnTwTranslation: Enables or disables the [Simplified and
-	// Traditional
-	// Chinese
-	// Search](https://developers.google.com/custom-search/docs/xml_r
-	// esults#chineseSearch)
-	// feature.
-	//
-	// Supported values are:
-	//
-	// * `0`: enabled (default)
-	//
-	// * `1`: disabled
-	DisableCnTwTranslation string `json:"disableCnTwTranslation,omitempty"`
-
-	// ExactTerms: Identifies a phrase that all documents in the search
-	// results must
-	// contain.
-	ExactTerms string `json:"exactTerms,omitempty"`
-
-	// ExcludeTerms: Identifies a word or phrase that should not appear in
-	// any documents in
-	// the search results.
-	ExcludeTerms string `json:"excludeTerms,omitempty"`
-
-	// FileType: 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 [file
-	// type
-	// FAQ](https://support.google.com/webmasters/answer/35287).
-	FileType string `json:"fileType,omitempty"`
-
-	// Filter: Activates or deactivates the automatic filtering of Google
-	// search
-	// results. See
-	// [Automatic
-	// Filtering](https://developers.google.com/custom-search/docs
-	// /xml_results#automaticFiltering)
-	// 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 string `json:"filter,omitempty"`
-
-	// Gl: Boosts search results whose country of origin matches the
-	// parameter
-	// value. See
-	// [Country
-	// Codes](https://developers.google.com/custom-search/docs/xml_r
-	// esults#countryCodes)
-	// 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 string `json:"gl,omitempty"`
-
-	// GoogleHost: Specifies the Google domain (for example, google.com,
-	// google.de, or
-	// google.fr) to which the search should be limited.
-	GoogleHost string `json:"googleHost,omitempty"`
-
-	// HighRange: 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 string `json:"highRange,omitempty"`
-
-	// Hl: 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
-	// [Interface
-	// Languages](https://developers.google.com/custom-search/docs
-	// /xml_results#wsInterfaceLanguages)
-	// section of [Internationalizing Queries and
-	// Results
-	// Presentation](https://developers.google.com/custom-search/docs
-	// /xml_results#wsInternationalizing)
-	// for more information, and [Supported
-	// Interface
-	// Languages](https://developers.google.com/custom-search/docs/
-	// xml_results_appendices#interfaceLanguages)
-	// for a list of supported languages.
-	Hl string `json:"hl,omitempty"`
-
-	// Hq: Appends the specified query terms to the query, as if they were
-	// combined
-	// with a logical `AND` operator.
-	Hq string `json:"hq,omitempty"`
-
-	// ImgColorType: Restricts results to images of a specified color type.
-	// Supported values
-	//   are:
-	//
-	// * `mono` (black and white)
-	//
-	// * `gray` (grayscale)
-	//
-	// * `color` (color)
-	ImgColorType string `json:"imgColorType,omitempty"`
-
-	// ImgDominantColor: 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 string `json:"imgDominantColor,omitempty"`
-
-	// ImgSize: Restricts results to images of a specified size. Supported
-	// values are:
-	//
-	// * `icon` (small)
-	//
-	// * `small | medium | large | xlarge` (medium)
-	//
-	// * `xxlarge` (large)
-	//
-	// * `huge` (extra-large)
-	ImgSize string `json:"imgSize,omitempty"`
-
-	// ImgType: 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 string `json:"imgType,omitempty"`
-
-	// InputEncoding: The character encoding supported for search requests.
-	InputEncoding string `json:"inputEncoding,omitempty"`
-
-	// Language: The language of the search results.
-	Language string `json:"language,omitempty"`
-
-	// LinkSite: Specifies that all results should contain a link to a
-	// specific URL.
-	LinkSite string `json:"linkSite,omitempty"`
-
-	// LowRange: 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 string `json:"lowRange,omitempty"`
-
-	// OrTerms: 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
-	// [Boolean
-	// OR](https://developers.google.com/custom-search/docs/xml_resu
-	// lts#BooleanOrqt)
-	// query term for this type of query.
-	OrTerms string `json:"orTerms,omitempty"`
-
-	// OutputEncoding: The character encoding supported for search results.
-	OutputEncoding string `json:"outputEncoding,omitempty"`
-
-	// RelatedSite: Specifies that all search results should be pages that
-	// are related to the
-	// specified URL. The parameter value should be a URL.
-	RelatedSite string `json:"relatedSite,omitempty"`
-
-	// Rights: Filters based on licensing. Supported values include:
-	//
-	// * `cc_publicdomain`
-	//
-	// * `cc_attribute`
-	//
-	// * `cc_sharealike`
-	//
-	// * `cc_noncommercial`
-	//
-	// * `cc_nonderived`
-	Rights string `json:"rights,omitempty"`
-
-	// Safe: Specifies the
-	// [SafeSearch
-	// level](https://developers.google.com/custom-search/docs/xm
-	// l_results#safeSearchLevels)
-	// 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 string `json:"safe,omitempty"`
-
-	// SearchTerms: The search terms entered by the user.
-	SearchTerms string `json:"searchTerms,omitempty"`
-
-	// SearchType: Allowed values are `web` or `image`. If unspecified,
-	// results are limited
-	// to webpages.
-	SearchType string `json:"searchType,omitempty"`
-
-	// SiteSearch: Restricts results to URLs from a specified site.
-	SiteSearch string `json:"siteSearch,omitempty"`
-
-	// SiteSearchFilter: 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 string `json:"siteSearchFilter,omitempty"`
-
-	// Sort: Specifies that results should be sorted according to the
-	// specified
-	// expression. For example, sort by date.
-	Sort string `json:"sort,omitempty"`
-
-	// StartIndex: 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 int64 `json:"startIndex,omitempty"`
-
-	// StartPage: The page number of this set of results, where the page
-	// length is set by
-	// the `count` property.
-	StartPage int64 `json:"startPage,omitempty"`
-
-	// Title: A description of the query.
-	Title string `json:"title,omitempty"`
-
-	// TotalResults: Estimated number of total search results. May not be
-	// accurate.
-	TotalResults int64 `json:"totalResults,omitempty,string"`
-
-	// ForceSendFields is a list of field names (e.g. "Count") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "Count") to include in API
-	// requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *SearchQueriesNextPage) MarshalJSON() ([]byte, error) {
-	type NoMethod SearchQueriesNextPage
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// SearchQueriesPreviousPage: Custom search request metadata.
-type SearchQueriesPreviousPage struct {
-	// Count: Number of search results returned in this set.
-	Count int64 `json:"count,omitempty"`
-
-	// Cr: Restricts search results to documents originating in a
-	// particular
-	// country. You may use
-	// [Boolean
-	// operators](https://developers.google.com/custom-search/docs/x
-	// ml_results#booleanOperators)
-	// 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 [Country (cr)
-	// Parameter
-	// Values](https://developers.google.com/custom-search/docs/xml
-	// _results#countryCollections)
-	// for a list of valid values for this parameter.
-	Cr string `json:"cr,omitempty"`
-
-	// Cx: The identifier of a custom search engine created using the Custom
-	// Search
-	// [Control Panel](https://cse.google.com/). This is a custom property
-	// not
-	// defined in the OpenSearch spec. This parameter is **required**.
-	Cx string `json:"cx,omitempty"`
-
-	// DateRestrict: 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 string `json:"dateRestrict,omitempty"`
-
-	// DisableCnTwTranslation: Enables or disables the [Simplified and
-	// Traditional
-	// Chinese
-	// Search](https://developers.google.com/custom-search/docs/xml_r
-	// esults#chineseSearch)
-	// feature.
-	//
-	// Supported values are:
-	//
-	// * `0`: enabled (default)
-	//
-	// * `1`: disabled
-	DisableCnTwTranslation string `json:"disableCnTwTranslation,omitempty"`
-
-	// ExactTerms: Identifies a phrase that all documents in the search
-	// results must
-	// contain.
-	ExactTerms string `json:"exactTerms,omitempty"`
-
-	// ExcludeTerms: Identifies a word or phrase that should not appear in
-	// any documents in
-	// the search results.
-	ExcludeTerms string `json:"excludeTerms,omitempty"`
-
-	// FileType: 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 [file
-	// type
-	// FAQ](https://support.google.com/webmasters/answer/35287).
-	FileType string `json:"fileType,omitempty"`
-
-	// Filter: Activates or deactivates the automatic filtering of Google
-	// search
-	// results. See
-	// [Automatic
-	// Filtering](https://developers.google.com/custom-search/docs
-	// /xml_results#automaticFiltering)
-	// 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 string `json:"filter,omitempty"`
-
-	// Gl: Boosts search results whose country of origin matches the
-	// parameter
-	// value. See
-	// [Country
-	// Codes](https://developers.google.com/custom-search/docs/xml_r
-	// esults#countryCodes)
-	// 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 string `json:"gl,omitempty"`
-
-	// GoogleHost: Specifies the Google domain (for example, google.com,
-	// google.de, or
-	// google.fr) to which the search should be limited.
-	GoogleHost string `json:"googleHost,omitempty"`
-
-	// HighRange: 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 string `json:"highRange,omitempty"`
-
-	// Hl: 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
-	// [Interface
-	// Languages](https://developers.google.com/custom-search/docs
-	// /xml_results#wsInterfaceLanguages)
-	// section of [Internationalizing Queries and
-	// Results
-	// Presentation](https://developers.google.com/custom-search/docs
-	// /xml_results#wsInternationalizing)
-	// for more information, and [Supported
-	// Interface
-	// Languages](https://developers.google.com/custom-search/docs/
-	// xml_results_appendices#interfaceLanguages)
-	// for a list of supported languages.
-	Hl string `json:"hl,omitempty"`
-
-	// Hq: Appends the specified query terms to the query, as if they were
-	// combined
-	// with a logical `AND` operator.
-	Hq string `json:"hq,omitempty"`
-
-	// ImgColorType: Restricts results to images of a specified color type.
-	// Supported values
-	//   are:
-	//
-	// * `mono` (black and white)
-	//
-	// * `gray` (grayscale)
-	//
-	// * `color` (color)
-	ImgColorType string `json:"imgColorType,omitempty"`
-
-	// ImgDominantColor: 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 string `json:"imgDominantColor,omitempty"`
-
-	// ImgSize: Restricts results to images of a specified size. Supported
-	// values are:
-	//
-	// * `icon` (small)
-	//
-	// * `small | medium | large | xlarge` (medium)
-	//
-	// * `xxlarge` (large)
-	//
-	// * `huge` (extra-large)
-	ImgSize string `json:"imgSize,omitempty"`
-
-	// ImgType: 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 string `json:"imgType,omitempty"`
-
-	// InputEncoding: The character encoding supported for search requests.
-	InputEncoding string `json:"inputEncoding,omitempty"`
-
-	// Language: The language of the search results.
-	Language string `json:"language,omitempty"`
-
-	// LinkSite: Specifies that all results should contain a link to a
-	// specific URL.
-	LinkSite string `json:"linkSite,omitempty"`
-
-	// LowRange: 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 string `json:"lowRange,omitempty"`
-
-	// OrTerms: 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
-	// [Boolean
-	// OR](https://developers.google.com/custom-search/docs/xml_resu
-	// lts#BooleanOrqt)
-	// query term for this type of query.
-	OrTerms string `json:"orTerms,omitempty"`
-
-	// OutputEncoding: The character encoding supported for search results.
-	OutputEncoding string `json:"outputEncoding,omitempty"`
-
-	// RelatedSite: Specifies that all search results should be pages that
-	// are related to the
-	// specified URL. The parameter value should be a URL.
-	RelatedSite string `json:"relatedSite,omitempty"`
-
-	// Rights: Filters based on licensing. Supported values include:
-	//
-	// * `cc_publicdomain`
-	//
-	// * `cc_attribute`
-	//
-	// * `cc_sharealike`
-	//
-	// * `cc_noncommercial`
-	//
-	// * `cc_nonderived`
-	Rights string `json:"rights,omitempty"`
-
-	// Safe: Specifies the
-	// [SafeSearch
-	// level](https://developers.google.com/custom-search/docs/xm
-	// l_results#safeSearchLevels)
-	// 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 string `json:"safe,omitempty"`
-
-	// SearchTerms: The search terms entered by the user.
-	SearchTerms string `json:"searchTerms,omitempty"`
-
-	// SearchType: Allowed values are `web` or `image`. If unspecified,
-	// results are limited
-	// to webpages.
-	SearchType string `json:"searchType,omitempty"`
-
-	// SiteSearch: Restricts results to URLs from a specified site.
-	SiteSearch string `json:"siteSearch,omitempty"`
-
-	// SiteSearchFilter: 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 string `json:"siteSearchFilter,omitempty"`
-
-	// Sort: Specifies that results should be sorted according to the
-	// specified
-	// expression. For example, sort by date.
-	Sort string `json:"sort,omitempty"`
-
-	// StartIndex: 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 int64 `json:"startIndex,omitempty"`
-
-	// StartPage: The page number of this set of results, where the page
-	// length is set by
-	// the `count` property.
-	StartPage int64 `json:"startPage,omitempty"`
-
-	// Title: A description of the query.
-	Title string `json:"title,omitempty"`
-
-	// TotalResults: Estimated number of total search results. May not be
-	// accurate.
-	TotalResults int64 `json:"totalResults,omitempty,string"`
-
-	// ForceSendFields is a list of field names (e.g. "Count") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "Count") to include in API
-	// requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *SearchQueriesPreviousPage) MarshalJSON() ([]byte, error) {
-	type NoMethod SearchQueriesPreviousPage
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// SearchQueriesRequest: Custom search request metadata.
-type SearchQueriesRequest struct {
-	// Count: Number of search results returned in this set.
-	Count int64 `json:"count,omitempty"`
-
-	// Cr: Restricts search results to documents originating in a
-	// particular
-	// country. You may use
-	// [Boolean
-	// operators](https://developers.google.com/custom-search/docs/x
-	// ml_results#booleanOperators)
-	// 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 [Country (cr)
-	// Parameter
-	// Values](https://developers.google.com/custom-search/docs/xml
-	// _results#countryCollections)
-	// for a list of valid values for this parameter.
-	Cr string `json:"cr,omitempty"`
-
-	// Cx: The identifier of a custom search engine created using the Custom
-	// Search
-	// [Control Panel](https://cse.google.com/). This is a custom property
-	// not
-	// defined in the OpenSearch spec. This parameter is **required**.
-	Cx string `json:"cx,omitempty"`
-
-	// DateRestrict: 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 string `json:"dateRestrict,omitempty"`
-
-	// DisableCnTwTranslation: Enables or disables the [Simplified and
-	// Traditional
-	// Chinese
-	// Search](https://developers.google.com/custom-search/docs/xml_r
-	// esults#chineseSearch)
-	// feature.
-	//
-	// Supported values are:
-	//
-	// * `0`: enabled (default)
-	//
-	// * `1`: disabled
-	DisableCnTwTranslation string `json:"disableCnTwTranslation,omitempty"`
-
-	// ExactTerms: Identifies a phrase that all documents in the search
-	// results must
-	// contain.
-	ExactTerms string `json:"exactTerms,omitempty"`
-
-	// ExcludeTerms: Identifies a word or phrase that should not appear in
-	// any documents in
-	// the search results.
-	ExcludeTerms string `json:"excludeTerms,omitempty"`
-
-	// FileType: 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 [file
-	// type
-	// FAQ](https://support.google.com/webmasters/answer/35287).
-	FileType string `json:"fileType,omitempty"`
-
-	// Filter: Activates or deactivates the automatic filtering of Google
-	// search
-	// results. See
-	// [Automatic
-	// Filtering](https://developers.google.com/custom-search/docs
-	// /xml_results#automaticFiltering)
-	// 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 string `json:"filter,omitempty"`
-
-	// Gl: Boosts search results whose country of origin matches the
-	// parameter
-	// value. See
-	// [Country
-	// Codes](https://developers.google.com/custom-search/docs/xml_r
-	// esults#countryCodes)
-	// 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 string `json:"gl,omitempty"`
-
-	// GoogleHost: Specifies the Google domain (for example, google.com,
-	// google.de, or
-	// google.fr) to which the search should be limited.
-	GoogleHost string `json:"googleHost,omitempty"`
-
-	// HighRange: 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 string `json:"highRange,omitempty"`
-
-	// Hl: 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
-	// [Interface
-	// Languages](https://developers.google.com/custom-search/docs
-	// /xml_results#wsInterfaceLanguages)
-	// section of [Internationalizing Queries and
-	// Results
-	// Presentation](https://developers.google.com/custom-search/docs
-	// /xml_results#wsInternationalizing)
-	// for more information, and [Supported
-	// Interface
-	// Languages](https://developers.google.com/custom-search/docs/
-	// xml_results_appendices#interfaceLanguages)
-	// for a list of supported languages.
-	Hl string `json:"hl,omitempty"`
-
-	// Hq: Appends the specified query terms to the query, as if they were
-	// combined
-	// with a logical `AND` operator.
-	Hq string `json:"hq,omitempty"`
-
-	// ImgColorType: Restricts results to images of a specified color type.
-	// Supported values
-	//   are:
-	//
-	// * `mono` (black and white)
-	//
-	// * `gray` (grayscale)
-	//
-	// * `color` (color)
-	ImgColorType string `json:"imgColorType,omitempty"`
-
-	// ImgDominantColor: 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 string `json:"imgDominantColor,omitempty"`
-
-	// ImgSize: Restricts results to images of a specified size. Supported
-	// values are:
-	//
-	// * `icon` (small)
-	//
-	// * `small | medium | large | xlarge` (medium)
-	//
-	// * `xxlarge` (large)
-	//
-	// * `huge` (extra-large)
-	ImgSize string `json:"imgSize,omitempty"`
-
-	// ImgType: 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 string `json:"imgType,omitempty"`
-
-	// InputEncoding: The character encoding supported for search requests.
-	InputEncoding string `json:"inputEncoding,omitempty"`
-
-	// Language: The language of the search results.
-	Language string `json:"language,omitempty"`
-
-	// LinkSite: Specifies that all results should contain a link to a
-	// specific URL.
-	LinkSite string `json:"linkSite,omitempty"`
-
-	// LowRange: 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 string `json:"lowRange,omitempty"`
-
-	// OrTerms: 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
-	// [Boolean
-	// OR](https://developers.google.com/custom-search/docs/xml_resu
-	// lts#BooleanOrqt)
-	// query term for this type of query.
-	OrTerms string `json:"orTerms,omitempty"`
-
-	// OutputEncoding: The character encoding supported for search results.
-	OutputEncoding string `json:"outputEncoding,omitempty"`
-
-	// RelatedSite: Specifies that all search results should be pages that
-	// are related to the
-	// specified URL. The parameter value should be a URL.
-	RelatedSite string `json:"relatedSite,omitempty"`
-
-	// Rights: Filters based on licensing. Supported values include:
-	//
-	// * `cc_publicdomain`
-	//
-	// * `cc_attribute`
-	//
-	// * `cc_sharealike`
-	//
-	// * `cc_noncommercial`
-	//
-	// * `cc_nonderived`
-	Rights string `json:"rights,omitempty"`
-
-	// Safe: Specifies the
-	// [SafeSearch
-	// level](https://developers.google.com/custom-search/docs/xm
-	// l_results#safeSearchLevels)
-	// 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 string `json:"safe,omitempty"`
-
-	// SearchTerms: The search terms entered by the user.
-	SearchTerms string `json:"searchTerms,omitempty"`
-
-	// SearchType: Allowed values are `web` or `image`. If unspecified,
-	// results are limited
-	// to webpages.
-	SearchType string `json:"searchType,omitempty"`
-
-	// SiteSearch: Restricts results to URLs from a specified site.
-	SiteSearch string `json:"siteSearch,omitempty"`
-
-	// SiteSearchFilter: 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 string `json:"siteSearchFilter,omitempty"`
-
-	// Sort: Specifies that results should be sorted according to the
-	// specified
-	// expression. For example, sort by date.
-	Sort string `json:"sort,omitempty"`
-
-	// StartIndex: 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 int64 `json:"startIndex,omitempty"`
-
-	// StartPage: The page number of this set of results, where the page
-	// length is set by
-	// the `count` property.
-	StartPage int64 `json:"startPage,omitempty"`
-
-	// Title: A description of the query.
-	Title string `json:"title,omitempty"`
-
-	// TotalResults: Estimated number of total search results. May not be
-	// accurate.
-	TotalResults int64 `json:"totalResults,omitempty,string"`
-
-	// ForceSendFields is a list of field names (e.g. "Count") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "Count") to include in API
-	// requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *SearchQueriesRequest) MarshalJSON() ([]byte, error) {
-	type NoMethod SearchQueriesRequest
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// SearchSearchInformation: Metadata about a search operation.
 type SearchSearchInformation struct {
-	// FormattedSearchTime: The time taken for the server to return search
-	// results, formatted
-	// according to locale style.
 	FormattedSearchTime string `json:"formattedSearchTime,omitempty"`
 
-	// FormattedTotalResults: The total number of search results, formatted
-	// according to locale style.
 	FormattedTotalResults string `json:"formattedTotalResults,omitempty"`
 
-	// SearchTime: The time taken for the server to return search results.
 	SearchTime float64 `json:"searchTime,omitempty"`
 
-	// TotalResults: The total number of search results returned by the
-	// query.
-	TotalResults string `json:"totalResults,omitempty"`
+	TotalResults int64 `json:"totalResults,omitempty,string"`
 
 	// ForceSendFields is a list of field names (e.g. "FormattedSearchTime")
 	// to unconditionally include in API requests. By default, fields with
@@ -1745,12 +608,9 @@
 	return nil
 }
 
-// SearchSpelling: Spell correction information for a query.
 type SearchSpelling struct {
-	// CorrectedQuery: The corrected query.
 	CorrectedQuery string `json:"correctedQuery,omitempty"`
 
-	// HtmlCorrectedQuery: The corrected query, formatted in HTML.
 	HtmlCorrectedQuery string `json:"htmlCorrectedQuery,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "CorrectedQuery") to
@@ -1777,17 +637,9 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// SearchUrl: OpenSearch template and URL.
 type SearchUrl struct {
-	// Template: The actual
-	// [OpenSearch
-	// template](http://www.opensearch.org/specifications/opensea
-	// rch/1.1#opensearch_url_template_syntax)
-	// for this API.
 	Template string `json:"template,omitempty"`
 
-	// Type: The MIME type of the OpenSearch URL template for the Custom
-	// Search API.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Template") to
@@ -1824,101 +676,58 @@
 }
 
 // List: Returns metadata about the search performed, metadata about the
-// custom
-// search engine used for the search, and the search results.
-func (r *CseService) List() *CseListCall {
+// custom search engine used for the search, and the search results.
+func (r *CseService) List(q string) *CseListCall {
 	c := &CseListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.urlParams_.Set("q", q)
 	return c
 }
 
-// C2coff sets the optional parameter "c2coff": Enables or disables
-// [Simplified and Traditional
-// Chinese
-// Search](https://developers.google.com/custom-search/docs/xml_r
-// esults#chineseSearch).
-//
-// The default value for this parameter is 0 (zero), meaning that the
-// feature
-// is enabled. Supported values are:
-//
-// * `1`: Disabled
-//
-// * `0`: Enabled (default)
+// C2coff sets the optional parameter "c2coff": Turns off the
+// translation between zh-CN and zh-TW.
 func (c *CseListCall) C2coff(c2coff string) *CseListCall {
 	c.urlParams_.Set("c2coff", c2coff)
 	return c
 }
 
-// Cr sets the optional parameter "cr": Restricts search results to
-// documents originating in a particular country.
-// You may use
-// [Boolean
-// operators](https://developers.google.com/custom-search/docs/x
-// ml_results_appendices#booleanOperators)
-// 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 [Country
-// Parameter
-// Values](https://developers.google.com/custom-search/docs/xml
-// _results_appendices#countryCollections)
-// page for a list of valid values for this parameter.
+// Cr sets the optional parameter "cr": Country restrict(s).
 func (c *CseListCall) Cr(cr string) *CseListCall {
 	c.urlParams_.Set("cr", cr)
 	return c
 }
 
 // Cx sets the optional parameter "cx": The custom search engine ID to
-// use for this request.
+// scope this search query
 func (c *CseListCall) Cx(cx string) *CseListCall {
 	c.urlParams_.Set("cx", cx)
 	return c
 }
 
-// DateRestrict sets the optional parameter "dateRestrict": 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 sets the optional parameter "dateRestrict": Specifies
+// all search results are from a time period
 func (c *CseListCall) DateRestrict(dateRestrict string) *CseListCall {
 	c.urlParams_.Set("dateRestrict", dateRestrict)
 	return c
 }
 
 // ExactTerms sets the optional parameter "exactTerms": Identifies a
-// phrase that all documents in the search results must contain.
+// phrase that all documents in the search results must contain
 func (c *CseListCall) ExactTerms(exactTerms string) *CseListCall {
 	c.urlParams_.Set("exactTerms", exactTerms)
 	return c
 }
 
 // ExcludeTerms sets the optional parameter "excludeTerms": Identifies a
-// word or phrase that should not appear in any documents in the
-// search results.
+// word or phrase that should not appear in any documents in the search
+// results
 func (c *CseListCall) ExcludeTerms(excludeTerms string) *CseListCall {
 	c.urlParams_.Set("excludeTerms", excludeTerms)
 	return c
 }
 
-// FileType sets the optional parameter "fileType": Restricts results to
-// files of a specified extension. A list of file types
-// indexable by Google can be found in Search Console
-// [Help
-// Center](https://support.google.com/webmasters/answer/35287).
+// FileType sets the optional parameter "fileType": Returns images of a
+// specified type. Some of the allowed values are: bmp, gif, png, jpg,
+// svg, pdf, ...
 func (c *CseListCall) FileType(fileType string) *CseListCall {
 	c.urlParams_.Set("fileType", fileType)
 	return c
@@ -1927,69 +736,29 @@
 // Filter sets the optional parameter "filter": Controls turning on or
 // off the duplicate content filter.
 //
-// * See
-// [Automatic
-// Filtering](https://developers.google.com/custom-search/docs
-// /xml_results#automaticFiltering)
-// 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.
+// Possible values:
+//   "0" - Turns off duplicate content filter.
+//   "1" - Turns on duplicate content filter.
 func (c *CseListCall) Filter(filter string) *CseListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
 }
 
 // Gl sets the optional parameter "gl": 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
-// [Country
-// Codes](https://developers.google.com/custom-search/docs/xml_r
-// esults_appendices#countryCodes)
-// 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.
 func (c *CseListCall) Gl(gl string) *CseListCall {
 	c.urlParams_.Set("gl", gl)
 	return c
 }
 
-// Googlehost sets the optional parameter "googlehost": **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 sets the optional parameter "googlehost": The local Google
+// domain to use to perform the search.
 func (c *CseListCall) Googlehost(googlehost string) *CseListCall {
 	c.urlParams_.Set("googlehost", googlehost)
 	return c
 }
 
-// HighRange sets the optional parameter "highRange": 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 sets the optional parameter "highRange": Creates a range in
+// form as_nlo value..as_nhi value and attempts to append it to query
 func (c *CseListCall) HighRange(highRange string) *CseListCall {
 	c.urlParams_.Set("highRange", highRange)
 	return c
@@ -1997,350 +766,198 @@
 
 // Hl sets the optional parameter "hl": Sets the user interface
 // language.
-//
-// * Explicitly setting this parameter improves the performance and
-// the
-// quality of your search results.
-//
-// * See the
-// [Interface
-// Languages](https://developers.google.com/custom-search/docs
-// /xml_results#wsInterfaceLanguages)
-// section of [Internationalizing Queries and
-// Results
-// Presentation](https://developers.google.com/custom-search/docs
-// /xml_results#wsInternationalizing)
-// for more information, and (Supported
-// Interface
-// Languages)[https://developers.google.com/custom-search/docs/
-// xml_results_appendices#interfaceLanguages]
-// for a list of supported languages.
 func (c *CseListCall) Hl(hl string) *CseListCall {
 	c.urlParams_.Set("hl", hl)
 	return c
 }
 
-// Hq sets the optional parameter "hq": Appends the specified query
-// terms to the query, as if they were combined
-// with a logical AND operator.
+// Hq sets the optional parameter "hq": Appends the extra query terms to
+// the query.
 func (c *CseListCall) Hq(hq string) *CseListCall {
 	c.urlParams_.Set("hq", hq)
 	return c
 }
 
 // ImgColorType sets the optional parameter "imgColorType": Returns
-// black and white, grayscale, transparent, or color images.
-// Acceptable values are:
-//
-// * "color"
-//
-// * "gray"
-//
-// * "mono": black and white
-//
-// * "trans": transparent background
+// black and white, grayscale, or color images: mono, gray, and color.
 //
 // Possible values:
-//   "imgColorTypeUndefined"
-//   "mono"
-//   "gray"
-//   "color"
-//   "trans"
+//   "color" - color
+//   "gray" - gray
+//   "mono" - mono
 func (c *CseListCall) ImgColorType(imgColorType string) *CseListCall {
 	c.urlParams_.Set("imgColorType", imgColorType)
 	return c
 }
 
 // ImgDominantColor sets the optional parameter "imgDominantColor":
-// Returns images of a specific dominant color. Acceptable values
-// are:
-//
-// * "black"
-//
-// * "blue"
-//
-// * "brown"
-//
-// * "gray"
-//
-// * "green"
-//
-// * "orange"
-//
-// * "pink"
-//
-// * "purple"
-//
-// * "red"
-//
-// * "teal"
-//
-// * "white"
-//
-// * "yellow"
+// Returns images of a specific dominant color: red, orange, yellow,
+// green, teal, blue, purple, pink, white, gray, black and brown.
 //
 // Possible values:
-//   "imgDominantColorUndefined"
-//   "black"
-//   "blue"
-//   "brown"
-//   "gray"
-//   "green"
-//   "orange"
-//   "pink"
-//   "purple"
-//   "red"
-//   "teal"
-//   "white"
-//   "yellow"
+//   "black" - black
+//   "blue" - blue
+//   "brown" - brown
+//   "gray" - gray
+//   "green" - green
+//   "orange" - orange
+//   "pink" - pink
+//   "purple" - purple
+//   "red" - red
+//   "teal" - teal
+//   "white" - white
+//   "yellow" - yellow
 func (c *CseListCall) ImgDominantColor(imgDominantColor string) *CseListCall {
 	c.urlParams_.Set("imgDominantColor", imgDominantColor)
 	return c
 }
 
 // ImgSize sets the optional parameter "imgSize": Returns images of a
-// specified size. Acceptable values are:
-//
-// * "huge"
-//
-// * "icon"
-//
-// * "large"
-//
-// * "medium"
-//
-// * "small"
-//
-// * "xlarge"
-//
-// * "xxlarge"
+// specified size, where size can be one of: icon, small, medium, large,
+// xlarge, xxlarge, and huge.
 //
 // Possible values:
-//   "imgSizeUndefined"
-//   "HUGE"
-//   "ICON"
-//   "LARGE"
-//   "MEDIUM"
-//   "SMALL"
-//   "XLARGE"
-//   "XXLARGE"
+//   "huge" - huge
+//   "icon" - icon
+//   "large" - large
+//   "medium" - medium
+//   "small" - small
+//   "xlarge" - xlarge
+//   "xxlarge" - xxlarge
 func (c *CseListCall) ImgSize(imgSize string) *CseListCall {
 	c.urlParams_.Set("imgSize", imgSize)
 	return c
 }
 
 // ImgType sets the optional parameter "imgType": Returns images of a
-// type. Acceptable values are:
-//
-// * "clipart"
-//
-// * "face"
-//
-// * "lineart"
-//
-// * "stock"
-//
-// * "photo"
-//
-// * "animated"
+// type, which can be one of: clipart, face, lineart, news, and photo.
 //
 // Possible values:
-//   "imgTypeUndefined"
-//   "clipart"
-//   "face"
-//   "lineart"
-//   "stock"
-//   "photo"
-//   "animated"
+//   "clipart" - clipart
+//   "face" - face
+//   "lineart" - lineart
+//   "news" - news
+//   "photo" - photo
 func (c *CseListCall) ImgType(imgType string) *CseListCall {
 	c.urlParams_.Set("imgType", imgType)
 	return c
 }
 
 // LinkSite sets the optional parameter "linkSite": Specifies that all
-// search results should contain a link to a particular
-// URL.
+// search results should contain a link to a particular URL
 func (c *CseListCall) LinkSite(linkSite string) *CseListCall {
 	c.urlParams_.Set("linkSite", linkSite)
 	return c
 }
 
-// LowRange sets the optional parameter "lowRange": 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 sets the optional parameter "lowRange": Creates a range in
+// form as_nlo value..as_nhi value and attempts to append it to query
 func (c *CseListCall) LowRange(lowRange string) *CseListCall {
 	c.urlParams_.Set("lowRange", lowRange)
 	return c
 }
 
-// Lr sets the optional parameter "lr": Restricts the search to
-// documents written in a particular language
-// (e.g.,
-// `lr=lang_ja`).
+// Lr sets the optional parameter "lr": The language restriction for the
+// search results
 //
-// 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)
+// Possible values:
+//   "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)
 func (c *CseListCall) Lr(lr string) *CseListCall {
 	c.urlParams_.Set("lr", lr)
 	return c
 }
 
 // Num sets the optional parameter "num": Number of search results to
-// return.
-//
-// * Valid values are integers between 1 and 10, inclusive.
+// return
 func (c *CseListCall) Num(num int64) *CseListCall {
 	c.urlParams_.Set("num", fmt.Sprint(num))
 	return c
 }
 
 // OrTerms sets the optional parameter "orTerms": 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.
+// 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
 func (c *CseListCall) OrTerms(orTerms string) *CseListCall {
 	c.urlParams_.Set("orTerms", orTerms)
 	return c
 }
 
-// Q sets the optional parameter "q": Query
-func (c *CseListCall) Q(q string) *CseListCall {
-	c.urlParams_.Set("q", q)
-	return c
-}
-
 // RelatedSite sets the optional parameter "relatedSite": Specifies that
-// all search results should be pages that are related to the
-// specified URL.
+// all search results should be pages that are related to the specified
+// URL
 func (c *CseListCall) RelatedSite(relatedSite string) *CseListCall {
 	c.urlParams_.Set("relatedSite", relatedSite)
 	return c
 }
 
 // Rights sets the optional parameter "rights": Filters based on
-// licensing. Supported values include:
-// `cc_publicdomain`,
-// `cc_attribute`, `cc_sharealike`, `cc_noncommercial`, `cc_nonderived`
-// and
-// combinations of these. See
-// [typical
-// combinations](https://wiki.creativecommons.org/wiki/CC_Search
-// _integration).
+// licensing. Supported values include: cc_publicdomain, cc_attribute,
+// cc_sharealike, cc_noncommercial, cc_nonderived and combinations of
+// these.
 func (c *CseListCall) Rights(rights string) *CseListCall {
 	c.urlParams_.Set("rights", rights)
 	return c
 }
 
-// Safe sets the optional parameter "safe": Search safety level.
-// Acceptable values are:
-//
-// * "active": Enables SafeSearch filtering.
-//
-// * "off": Disables SafeSearch filtering. (default)
+// Safe sets the optional parameter "safe": Search safety level
 //
 // Possible values:
-//   "safeUndefined"
-//   "active"
-//   "high"
-//   "medium"
-//   "off"
+//   "active" - Enables safe search filtering.
+//   "high" - (Deprecated) Same as active.
+//   "medium" - (Deprecated) Same as active.
+//   "off" (default) - Disables safe search filtering.
 func (c *CseListCall) Safe(safe string) *CseListCall {
 	c.urlParams_.Set("safe", safe)
 	return c
 }
 
 // SearchType sets the optional parameter "searchType": Specifies the
-// search type: `image`. If unspecified, results are limited
-// to
-// webpages.
-//
-// Acceptable values are:
-//
-// * "image": custom image search.
+// search type: image.
 //
 // Possible values:
-//   "searchTypeUndefined"
-//   "image"
+//   "image" - custom image search
 func (c *CseListCall) SearchType(searchType string) *CseListCall {
 	c.urlParams_.Set("searchType", searchType)
 	return c
 }
 
-// SiteSearch sets the optional parameter "siteSearch": Specifies a
-// given site which should always be included or excluded from
-// results (see `siteSearchFilter` parameter, below).
+// SiteSearch sets the optional parameter "siteSearch": Specifies all
+// search results should be pages from a given site
 func (c *CseListCall) SiteSearch(siteSearch string) *CseListCall {
 	c.urlParams_.Set("siteSearch", siteSearch)
 	return c
@@ -2348,42 +965,25 @@
 
 // SiteSearchFilter sets the optional parameter "siteSearchFilter":
 // Controls whether to include or exclude results from the site named in
-// the
-// `siteSearch` parameter.
-//
-// Acceptable values are:
-//
-// * "e": exclude
-//
-// * "i": include
+// the as_sitesearch parameter
 //
 // Possible values:
-//   "siteSearchFilterUndefined"
-//   "e"
-//   "i"
+//   "e" - exclude
+//   "i" - include
 func (c *CseListCall) SiteSearchFilter(siteSearchFilter string) *CseListCall {
 	c.urlParams_.Set("siteSearchFilter", siteSearchFilter)
 	return c
 }
 
 // Sort sets the optional parameter "sort": The sort expression to apply
-// to the results.
+// to the results
 func (c *CseListCall) Sort(sort string) *CseListCall {
 	c.urlParams_.Set("sort", sort)
 	return c
 }
 
 // Start sets the optional parameter "start": 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.
+// result to return
 func (c *CseListCall) Start(start int64) *CseListCall {
 	c.urlParams_.Set("start", fmt.Sprint(start))
 	return c
@@ -2426,7 +1026,7 @@
 
 func (c *CseListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200425")
+	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200427")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -2437,7 +1037,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "customsearch/v1")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -2485,93 +1085,118 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Returns metadata about the search performed, metadata about the custom\nsearch engine used for the search, and the search results.",
-	//   "flatPath": "customsearch/v1",
+	//   "description": "Returns metadata about the search performed, metadata about the custom search engine used for the search, and the search results.",
 	//   "httpMethod": "GET",
 	//   "id": "search.cse.list",
-	//   "parameterOrder": [],
+	//   "parameterOrder": [
+	//     "q"
+	//   ],
 	//   "parameters": {
 	//     "c2coff": {
-	//       "description": "Enables or disables [Simplified and Traditional Chinese\nSearch](https://developers.google.com/custom-search/docs/xml_results#chineseSearch).\n\nThe default value for this parameter is 0 (zero), meaning that the feature\nis enabled. Supported values are:\n\n* `1`: Disabled\n\n* `0`: Enabled (default)",
+	//       "description": "Turns off the translation between zh-CN and zh-TW.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "cr": {
-	//       "description": "Restricts search results to documents originating in a particular country.\nYou may use [Boolean\noperators](https://developers.google.com/custom-search/docs/xml_results_appendices#booleanOperators)\nin the cr parameter's value.\n\nGoogle Search determines the country of a document by analyzing:\n\n* the top-level domain (TLD) of the document's URL\n\n* the geographic location of the Web server's IP address\n\nSee the [Country Parameter\nValues](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCollections)\npage for a list of valid values for this parameter.",
+	//       "description": "Country restrict(s).",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "cx": {
-	//       "description": "The custom search engine ID to use for this request.",
+	//       "description": "The custom search engine ID to scope this search query",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "dateRestrict": {
-	//       "description": "Restricts results to URLs based on date. Supported values include:\n\n* `d[number]`: requests results from the specified number of past days.\n\n* `w[number]`: requests results from the specified number of past weeks.\n\n* `m[number]`: requests results from the specified number of past months.\n\n* `y[number]`: requests results from the specified number of past years.",
+	//       "description": "Specifies all search results are from a time period",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "exactTerms": {
-	//       "description": "Identifies a phrase that all documents in the search results must contain.",
+	//       "description": "Identifies a phrase that all documents in the search results must contain",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "excludeTerms": {
-	//       "description": "Identifies a word or phrase that should not appear in any documents in the\nsearch results.",
+	//       "description": "Identifies a word or phrase that should not appear in any documents in the search results",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "fileType": {
-	//       "description": "Restricts results to files of a specified extension. A list of file types\nindexable by Google can be found in Search Console [Help\nCenter](https://support.google.com/webmasters/answer/35287).",
+	//       "description": "Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, pdf, ...",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "filter": {
-	//       "description": "Controls turning on or off the duplicate content filter.\n\n* See [Automatic\nFiltering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering)\nfor more information about Google's search results filters. Note that host\ncrowding filtering applies only to multi-site searches.\n\n* By default, Google applies filtering to all search results to improve the\nquality of those results.\n\nAcceptable values are:\n\n* `0`: Turns off duplicate content filter.\n\n* `1`: Turns on duplicate content filter.",
+	//       "description": "Controls turning on or off the duplicate content filter.",
+	//       "enum": [
+	//         "0",
+	//         "1"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Turns off duplicate content filter.",
+	//         "Turns on duplicate content filter."
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "gl": {
-	//       "description": "Geolocation of end user.\n\n* The `gl` parameter value is a two-letter country code. The `gl` parameter\nboosts search results whose country of origin matches the parameter value.\nSee the [Country\nCodes](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCodes)\npage for a list of valid values.\n\n* Specifying a `gl` parameter value should lead to more relevant results.\nThis is particularly true for international customers and, even more\nspecifically, for customers in English- speaking countries other than the\nUnited States.",
+	//       "description": "Geolocation of end user.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "googlehost": {
-	//       "description": "**Deprecated**. Use the `gl` parameter for a similar effect.\n\nThe local Google domain (for example, google.com, google.de, or\ngoogle.fr) to use to perform the search.",
+	//       "description": "The local Google domain to use to perform the search.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "highRange": {
-	//       "description": "Specifies the ending value for a search range.\n\n* Use `lowRange` and `highRange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
+	//       "description": "Creates a range in form as_nlo value..as_nhi value and attempts to append it to query",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "hl": {
-	//       "description": "Sets the user interface language.\n\n* Explicitly setting this parameter improves the performance and the\nquality of your search results.\n\n* See the [Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages)\nsection of [Internationalizing Queries and Results\nPresentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing)\nfor more information, and (Supported Interface\nLanguages)[https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages]\nfor a list of supported languages.",
+	//       "description": "Sets the user interface language.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "hq": {
-	//       "description": "Appends the specified query terms to the query, as if they were combined\nwith a logical AND operator.",
+	//       "description": "Appends the extra query terms to the query.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "imgColorType": {
-	//       "description": "Returns black and white, grayscale, transparent, or color images.\nAcceptable values are:\n\n* `\"color\"`\n\n* `\"gray\"`\n\n* `\"mono\"`: black and white\n\n* `\"trans\"`: transparent background",
+	//       "description": "Returns black and white, grayscale, or color images: mono, gray, and color.",
 	//       "enum": [
-	//         "imgColorTypeUndefined",
-	//         "mono",
-	//         "gray",
 	//         "color",
-	//         "trans"
+	//         "gray",
+	//         "mono"
+	//       ],
+	//       "enumDescriptions": [
+	//         "color",
+	//         "gray",
+	//         "mono"
 	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "imgDominantColor": {
-	//       "description": "Returns images of a specific dominant color. Acceptable values are:\n\n* `\"black\"`\n\n* `\"blue\"`\n\n* `\"brown\"`\n\n* `\"gray\"`\n\n* `\"green\"`\n\n* `\"orange\"`\n\n* `\"pink\"`\n\n* `\"purple\"`\n\n* `\"red\"`\n\n* `\"teal\"`\n\n* `\"white\"`\n\n* `\"yellow\"`",
+	//       "description": "Returns images of a specific dominant color: red, orange, yellow, green, teal, blue, purple, pink, white, gray, black and brown.",
 	//       "enum": [
-	//         "imgDominantColorUndefined",
+	//         "black",
+	//         "blue",
+	//         "brown",
+	//         "gray",
+	//         "green",
+	//         "orange",
+	//         "pink",
+	//         "purple",
+	//         "red",
+	//         "teal",
+	//         "white",
+	//         "yellow"
+	//       ],
+	//       "enumDescriptions": [
 	//         "black",
 	//         "blue",
 	//         "brown",
@@ -2589,124 +1214,224 @@
 	//       "type": "string"
 	//     },
 	//     "imgSize": {
-	//       "description": "Returns images of a specified size. Acceptable values are:\n\n* `\"huge\"`\n\n* `\"icon\"`\n\n* `\"large\"`\n\n* `\"medium\"`\n\n* `\"small\"`\n\n* `\"xlarge\"`\n\n* `\"xxlarge\"`",
+	//       "description": "Returns images of a specified size, where size can be one of: icon, small, medium, large, xlarge, xxlarge, and huge.",
 	//       "enum": [
-	//         "imgSizeUndefined",
-	//         "HUGE",
-	//         "ICON",
-	//         "LARGE",
-	//         "MEDIUM",
-	//         "SMALL",
-	//         "XLARGE",
-	//         "XXLARGE"
+	//         "huge",
+	//         "icon",
+	//         "large",
+	//         "medium",
+	//         "small",
+	//         "xlarge",
+	//         "xxlarge"
+	//       ],
+	//       "enumDescriptions": [
+	//         "huge",
+	//         "icon",
+	//         "large",
+	//         "medium",
+	//         "small",
+	//         "xlarge",
+	//         "xxlarge"
 	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "imgType": {
-	//       "description": "Returns images of a type. Acceptable values are:\n\n* `\"clipart\"`\n\n* `\"face\"`\n\n* `\"lineart\"`\n\n* `\"stock\"`\n\n* `\"photo\"`\n\n* `\"animated\"`",
+	//       "description": "Returns images of a type, which can be one of: clipart, face, lineart, news, and photo.",
 	//       "enum": [
-	//         "imgTypeUndefined",
 	//         "clipart",
 	//         "face",
 	//         "lineart",
-	//         "stock",
-	//         "photo",
-	//         "animated"
+	//         "news",
+	//         "photo"
+	//       ],
+	//       "enumDescriptions": [
+	//         "clipart",
+	//         "face",
+	//         "lineart",
+	//         "news",
+	//         "photo"
 	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "linkSite": {
-	//       "description": "Specifies that all search results should contain a link to a particular\nURL.",
+	//       "description": "Specifies that all search results should contain a link to a particular URL",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "lowRange": {
-	//       "description": "Specifies the starting value for a search range. Use `lowRange` and\n`highRange` to append an inclusive search range of `lowRange...highRange`\nto the query.",
+	//       "description": "Creates a range in form as_nlo value..as_nhi value and attempts to append it to query",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "lr": {
-	//       "description": "Restricts the search to documents written in a particular language (e.g.,\n`lr=lang_ja`).\n\nAcceptable values are:\n\n* `\"lang_ar\"`: Arabic\n\n* `\"lang_bg\"`: Bulgarian\n\n* `\"lang_ca\"`: Catalan\n\n* `\"lang_cs\"`: Czech\n\n* `\"lang_da\"`: Danish\n\n* `\"lang_de\"`: German\n\n* `\"lang_el\"`: Greek\n\n* `\"lang_en\"`: English\n\n* `\"lang_es\"`: Spanish\n\n* `\"lang_et\"`: Estonian\n\n* `\"lang_fi\"`: Finnish\n\n* `\"lang_fr\"`: French\n\n* `\"lang_hr\"`: Croatian\n\n* `\"lang_hu\"`: Hungarian\n\n* `\"lang_id\"`: Indonesian\n\n* `\"lang_is\"`: Icelandic\n\n* `\"lang_it\"`: Italian\n\n* `\"lang_iw\"`: Hebrew\n\n* `\"lang_ja\"`: Japanese\n\n* `\"lang_ko\"`: Korean\n\n* `\"lang_lt\"`: Lithuanian\n\n* `\"lang_lv\"`: Latvian\n\n* `\"lang_nl\"`: Dutch\n\n* `\"lang_no\"`: Norwegian\n\n* `\"lang_pl\"`: Polish\n\n* `\"lang_pt\"`: Portuguese\n\n* `\"lang_ro\"`: Romanian\n\n* `\"lang_ru\"`: Russian\n\n* `\"lang_sk\"`: Slovak\n\n* `\"lang_sl\"`: Slovenian\n\n* `\"lang_sr\"`: Serbian\n\n* `\"lang_sv\"`: Swedish\n\n* `\"lang_tr\"`: Turkish\n\n* `\"lang_zh-CN\"`: Chinese (Simplified)\n\n* `\"lang_zh-TW\"`: Chinese (Traditional)",
+	//       "description": "The language restriction for the search results",
+	//       "enum": [
+	//         "lang_ar",
+	//         "lang_bg",
+	//         "lang_ca",
+	//         "lang_cs",
+	//         "lang_da",
+	//         "lang_de",
+	//         "lang_el",
+	//         "lang_en",
+	//         "lang_es",
+	//         "lang_et",
+	//         "lang_fi",
+	//         "lang_fr",
+	//         "lang_hr",
+	//         "lang_hu",
+	//         "lang_id",
+	//         "lang_is",
+	//         "lang_it",
+	//         "lang_iw",
+	//         "lang_ja",
+	//         "lang_ko",
+	//         "lang_lt",
+	//         "lang_lv",
+	//         "lang_nl",
+	//         "lang_no",
+	//         "lang_pl",
+	//         "lang_pt",
+	//         "lang_ro",
+	//         "lang_ru",
+	//         "lang_sk",
+	//         "lang_sl",
+	//         "lang_sr",
+	//         "lang_sv",
+	//         "lang_tr",
+	//         "lang_zh-CN",
+	//         "lang_zh-TW"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Arabic",
+	//         "Bulgarian",
+	//         "Catalan",
+	//         "Czech",
+	//         "Danish",
+	//         "German",
+	//         "Greek",
+	//         "English",
+	//         "Spanish",
+	//         "Estonian",
+	//         "Finnish",
+	//         "French",
+	//         "Croatian",
+	//         "Hungarian",
+	//         "Indonesian",
+	//         "Icelandic",
+	//         "Italian",
+	//         "Hebrew",
+	//         "Japanese",
+	//         "Korean",
+	//         "Lithuanian",
+	//         "Latvian",
+	//         "Dutch",
+	//         "Norwegian",
+	//         "Polish",
+	//         "Portuguese",
+	//         "Romanian",
+	//         "Russian",
+	//         "Slovak",
+	//         "Slovenian",
+	//         "Serbian",
+	//         "Swedish",
+	//         "Turkish",
+	//         "Chinese (Simplified)",
+	//         "Chinese (Traditional)"
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "num": {
-	//       "description": "Number of search results to return.\n\n* Valid values are integers between 1 and 10, inclusive.",
-	//       "format": "int32",
+	//       "default": "10",
+	//       "description": "Number of search results to return",
+	//       "format": "uint32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "orTerms": {
-	//       "description": "Provides additional search terms to check for in a document, where each\ndocument in the search results must contain at least one of the additional\nsearch terms.",
+	//       "description": "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",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "q": {
 	//       "description": "Query",
 	//       "location": "query",
+	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "relatedSite": {
-	//       "description": "Specifies that all search results should be pages that are related to the\nspecified URL.",
+	//       "description": "Specifies that all search results should be pages that are related to the specified URL",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "rights": {
-	//       "description": "Filters based on licensing. Supported values include: `cc_publicdomain`,\n`cc_attribute`, `cc_sharealike`, `cc_noncommercial`, `cc_nonderived` and\ncombinations of these. See [typical\ncombinations](https://wiki.creativecommons.org/wiki/CC_Search_integration).",
+	//       "description": "Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "safe": {
-	//       "description": "Search safety level. Acceptable values are:\n\n* `\"active\"`: Enables SafeSearch filtering.\n\n* `\"off\"`: Disables SafeSearch filtering. (default)",
+	//       "default": "off",
+	//       "description": "Search safety level",
 	//       "enum": [
-	//         "safeUndefined",
 	//         "active",
 	//         "high",
 	//         "medium",
 	//         "off"
 	//       ],
+	//       "enumDescriptions": [
+	//         "Enables safe search filtering.",
+	//         "(Deprecated) Same as active.",
+	//         "(Deprecated) Same as active.",
+	//         "Disables safe search filtering."
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "searchType": {
-	//       "description": "Specifies the search type: `image`. If unspecified, results are limited to\nwebpages.\n\nAcceptable values are:\n\n* `\"image\"`: custom image search.",
+	//       "description": "Specifies the search type: image.",
 	//       "enum": [
-	//         "searchTypeUndefined",
 	//         "image"
 	//       ],
+	//       "enumDescriptions": [
+	//         "custom image search"
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "siteSearch": {
-	//       "description": "Specifies a given site which should always be included or excluded from\nresults (see `siteSearchFilter` parameter, below).",
+	//       "description": "Specifies all search results should be pages from a given site",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "siteSearchFilter": {
-	//       "description": "Controls whether to include or exclude results from the site named in the\n`siteSearch` parameter.\n\nAcceptable values are:\n\n* `\"e\"`: exclude\n\n* `\"i\"`: include",
+	//       "description": "Controls whether to include or exclude results from the site named in the as_sitesearch parameter",
 	//       "enum": [
-	//         "siteSearchFilterUndefined",
 	//         "e",
 	//         "i"
 	//       ],
+	//       "enumDescriptions": [
+	//         "exclude",
+	//         "include"
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "sort": {
-	//       "description": "The sort expression to apply to the results.",
+	//       "description": "The sort expression to apply to the results",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "start": {
-	//       "description": "The index of the first result to return. The default number of results per\npage is 10, so `\u0026start=11` would start at the top of the second page of\nresults. **Note**: The JSON API will never return more than 100 results,\neven if more than 100 documents match the query, so setting the sum of\n`start + num` to a number greater than 100 will produce an error. Also note\nthat the maximum value for `num` is 10.",
+	//       "description": "The index of the first result to return",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     }
 	//   },
-	//   "path": "customsearch/v1",
+	//   "path": "v1",
 	//   "response": {
 	//     "$ref": "Search"
 	//   }
@@ -2716,7 +1441,7 @@
 
 // method id "search.cse.siterestrict.list":
 
-type SiterestrictListCall struct {
+type CseSiterestrictListCall struct {
 	s            *Service
 	urlParams_   gensupport.URLParams
 	ifNoneMatch_ string
@@ -2725,104 +1450,60 @@
 }
 
 // List: 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.
-func (r *SiterestrictService) List() *SiterestrictListCall {
-	c := &SiterestrictListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+// custom search engine used for the search, and the search results.
+// Uses a small set of url patterns.
+func (r *CseSiterestrictService) List(q string) *CseSiterestrictListCall {
+	c := &CseSiterestrictListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.urlParams_.Set("q", q)
 	return c
 }
 
-// C2coff sets the optional parameter "c2coff": Enables or disables
-// [Simplified and Traditional
-// Chinese
-// Search](https://developers.google.com/custom-search/docs/xml_r
-// esults#chineseSearch).
-//
-// The default value for this parameter is 0 (zero), meaning that the
-// feature
-// is enabled. Supported values are:
-//
-// * `1`: Disabled
-//
-// * `0`: Enabled (default)
-func (c *SiterestrictListCall) C2coff(c2coff string) *SiterestrictListCall {
+// C2coff sets the optional parameter "c2coff": Turns off the
+// translation between zh-CN and zh-TW.
+func (c *CseSiterestrictListCall) C2coff(c2coff string) *CseSiterestrictListCall {
 	c.urlParams_.Set("c2coff", c2coff)
 	return c
 }
 
-// Cr sets the optional parameter "cr": Restricts search results to
-// documents originating in a particular country.
-// You may use
-// [Boolean
-// operators](https://developers.google.com/custom-search/docs/x
-// ml_results_appendices#booleanOperators)
-// 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 [Country
-// Parameter
-// Values](https://developers.google.com/custom-search/docs/xml
-// _results_appendices#countryCollections)
-// page for a list of valid values for this parameter.
-func (c *SiterestrictListCall) Cr(cr string) *SiterestrictListCall {
+// Cr sets the optional parameter "cr": Country restrict(s).
+func (c *CseSiterestrictListCall) Cr(cr string) *CseSiterestrictListCall {
 	c.urlParams_.Set("cr", cr)
 	return c
 }
 
 // Cx sets the optional parameter "cx": The custom search engine ID to
-// use for this request.
-func (c *SiterestrictListCall) Cx(cx string) *SiterestrictListCall {
+// scope this search query
+func (c *CseSiterestrictListCall) Cx(cx string) *CseSiterestrictListCall {
 	c.urlParams_.Set("cx", cx)
 	return c
 }
 
-// DateRestrict sets the optional parameter "dateRestrict": 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.
-func (c *SiterestrictListCall) DateRestrict(dateRestrict string) *SiterestrictListCall {
+// DateRestrict sets the optional parameter "dateRestrict": Specifies
+// all search results are from a time period
+func (c *CseSiterestrictListCall) DateRestrict(dateRestrict string) *CseSiterestrictListCall {
 	c.urlParams_.Set("dateRestrict", dateRestrict)
 	return c
 }
 
 // ExactTerms sets the optional parameter "exactTerms": Identifies a
-// phrase that all documents in the search results must contain.
-func (c *SiterestrictListCall) ExactTerms(exactTerms string) *SiterestrictListCall {
+// phrase that all documents in the search results must contain
+func (c *CseSiterestrictListCall) ExactTerms(exactTerms string) *CseSiterestrictListCall {
 	c.urlParams_.Set("exactTerms", exactTerms)
 	return c
 }
 
 // ExcludeTerms sets the optional parameter "excludeTerms": Identifies a
-// word or phrase that should not appear in any documents in the
-// search results.
-func (c *SiterestrictListCall) ExcludeTerms(excludeTerms string) *SiterestrictListCall {
+// word or phrase that should not appear in any documents in the search
+// results
+func (c *CseSiterestrictListCall) ExcludeTerms(excludeTerms string) *CseSiterestrictListCall {
 	c.urlParams_.Set("excludeTerms", excludeTerms)
 	return c
 }
 
-// FileType sets the optional parameter "fileType": Restricts results to
-// files of a specified extension. A list of file types
-// indexable by Google can be found in Search Console
-// [Help
-// Center](https://support.google.com/webmasters/answer/35287).
-func (c *SiterestrictListCall) FileType(fileType string) *SiterestrictListCall {
+// FileType sets the optional parameter "fileType": Returns images of a
+// specified type. Some of the allowed values are: bmp, gif, png, jpg,
+// svg, pdf, ...
+func (c *CseSiterestrictListCall) FileType(fileType string) *CseSiterestrictListCall {
 	c.urlParams_.Set("fileType", fileType)
 	return c
 }
@@ -2830,464 +1511,254 @@
 // Filter sets the optional parameter "filter": Controls turning on or
 // off the duplicate content filter.
 //
-// * See
-// [Automatic
-// Filtering](https://developers.google.com/custom-search/docs
-// /xml_results#automaticFiltering)
-// 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.
-func (c *SiterestrictListCall) Filter(filter string) *SiterestrictListCall {
+// Possible values:
+//   "0" - Turns off duplicate content filter.
+//   "1" - Turns on duplicate content filter.
+func (c *CseSiterestrictListCall) Filter(filter string) *CseSiterestrictListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
 }
 
 // Gl sets the optional parameter "gl": 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
-// [Country
-// Codes](https://developers.google.com/custom-search/docs/xml_r
-// esults_appendices#countryCodes)
-// 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.
-func (c *SiterestrictListCall) Gl(gl string) *SiterestrictListCall {
+func (c *CseSiterestrictListCall) Gl(gl string) *CseSiterestrictListCall {
 	c.urlParams_.Set("gl", gl)
 	return c
 }
 
-// Googlehost sets the optional parameter "googlehost": **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.
-func (c *SiterestrictListCall) Googlehost(googlehost string) *SiterestrictListCall {
+// Googlehost sets the optional parameter "googlehost": The local Google
+// domain to use to perform the search.
+func (c *CseSiterestrictListCall) Googlehost(googlehost string) *CseSiterestrictListCall {
 	c.urlParams_.Set("googlehost", googlehost)
 	return c
 }
 
-// HighRange sets the optional parameter "highRange": Specifies the
-// ending value for a search range.
-//
-// * Use `lowRange` and `highRange` to append an inclusive search range
-// of
-// `lowRange...highRange` to the query.
-func (c *SiterestrictListCall) HighRange(highRange string) *SiterestrictListCall {
+// HighRange sets the optional parameter "highRange": Creates a range in
+// form as_nlo value..as_nhi value and attempts to append it to query
+func (c *CseSiterestrictListCall) HighRange(highRange string) *CseSiterestrictListCall {
 	c.urlParams_.Set("highRange", highRange)
 	return c
 }
 
 // Hl sets the optional parameter "hl": Sets the user interface
 // language.
-//
-// * Explicitly setting this parameter improves the performance and
-// the
-// quality of your search results.
-//
-// * See the
-// [Interface
-// Languages](https://developers.google.com/custom-search/docs
-// /xml_results#wsInterfaceLanguages)
-// section of [Internationalizing Queries and
-// Results
-// Presentation](https://developers.google.com/custom-search/docs
-// /xml_results#wsInternationalizing)
-// for more information, and (Supported
-// Interface
-// Languages)[https://developers.google.com/custom-search/docs/
-// xml_results_appendices#interfaceLanguages]
-// for a list of supported languages.
-func (c *SiterestrictListCall) Hl(hl string) *SiterestrictListCall {
+func (c *CseSiterestrictListCall) Hl(hl string) *CseSiterestrictListCall {
 	c.urlParams_.Set("hl", hl)
 	return c
 }
 
-// Hq sets the optional parameter "hq": Appends the specified query
-// terms to the query, as if they were combined
-// with a logical AND operator.
-func (c *SiterestrictListCall) Hq(hq string) *SiterestrictListCall {
+// Hq sets the optional parameter "hq": Appends the extra query terms to
+// the query.
+func (c *CseSiterestrictListCall) Hq(hq string) *CseSiterestrictListCall {
 	c.urlParams_.Set("hq", hq)
 	return c
 }
 
 // ImgColorType sets the optional parameter "imgColorType": Returns
-// black and white, grayscale, transparent, or color images.
-// Acceptable values are:
-//
-// * "color"
-//
-// * "gray"
-//
-// * "mono": black and white
-//
-// * "trans": transparent background
+// black and white, grayscale, or color images: mono, gray, and color.
 //
 // Possible values:
-//   "imgColorTypeUndefined"
-//   "mono"
-//   "gray"
-//   "color"
-//   "trans"
-func (c *SiterestrictListCall) ImgColorType(imgColorType string) *SiterestrictListCall {
+//   "color" - color
+//   "gray" - gray
+//   "mono" - mono
+func (c *CseSiterestrictListCall) ImgColorType(imgColorType string) *CseSiterestrictListCall {
 	c.urlParams_.Set("imgColorType", imgColorType)
 	return c
 }
 
 // ImgDominantColor sets the optional parameter "imgDominantColor":
-// Returns images of a specific dominant color. Acceptable values
-// are:
-//
-// * "black"
-//
-// * "blue"
-//
-// * "brown"
-//
-// * "gray"
-//
-// * "green"
-//
-// * "orange"
-//
-// * "pink"
-//
-// * "purple"
-//
-// * "red"
-//
-// * "teal"
-//
-// * "white"
-//
-// * "yellow"
+// Returns images of a specific dominant color: red, orange, yellow,
+// green, teal, blue, purple, pink, white, gray, black and brown.
 //
 // Possible values:
-//   "imgDominantColorUndefined"
-//   "black"
-//   "blue"
-//   "brown"
-//   "gray"
-//   "green"
-//   "orange"
-//   "pink"
-//   "purple"
-//   "red"
-//   "teal"
-//   "white"
-//   "yellow"
-func (c *SiterestrictListCall) ImgDominantColor(imgDominantColor string) *SiterestrictListCall {
+//   "black" - black
+//   "blue" - blue
+//   "brown" - brown
+//   "gray" - gray
+//   "green" - green
+//   "orange" - orange
+//   "pink" - pink
+//   "purple" - purple
+//   "red" - red
+//   "teal" - teal
+//   "white" - white
+//   "yellow" - yellow
+func (c *CseSiterestrictListCall) ImgDominantColor(imgDominantColor string) *CseSiterestrictListCall {
 	c.urlParams_.Set("imgDominantColor", imgDominantColor)
 	return c
 }
 
 // ImgSize sets the optional parameter "imgSize": Returns images of a
-// specified size. Acceptable values are:
-//
-// * "huge"
-//
-// * "icon"
-//
-// * "large"
-//
-// * "medium"
-//
-// * "small"
-//
-// * "xlarge"
-//
-// * "xxlarge"
+// specified size, where size can be one of: icon, small, medium, large,
+// xlarge, xxlarge, and huge.
 //
 // Possible values:
-//   "imgSizeUndefined"
-//   "HUGE"
-//   "ICON"
-//   "LARGE"
-//   "MEDIUM"
-//   "SMALL"
-//   "XLARGE"
-//   "XXLARGE"
-func (c *SiterestrictListCall) ImgSize(imgSize string) *SiterestrictListCall {
+//   "huge" - huge
+//   "icon" - icon
+//   "large" - large
+//   "medium" - medium
+//   "small" - small
+//   "xlarge" - xlarge
+//   "xxlarge" - xxlarge
+func (c *CseSiterestrictListCall) ImgSize(imgSize string) *CseSiterestrictListCall {
 	c.urlParams_.Set("imgSize", imgSize)
 	return c
 }
 
 // ImgType sets the optional parameter "imgType": Returns images of a
-// type. Acceptable values are:
-//
-// * "clipart"
-//
-// * "face"
-//
-// * "lineart"
-//
-// * "stock"
-//
-// * "photo"
-//
-// * "animated"
+// type, which can be one of: clipart, face, lineart, news, and photo.
 //
 // Possible values:
-//   "imgTypeUndefined"
-//   "clipart"
-//   "face"
-//   "lineart"
-//   "stock"
-//   "photo"
-//   "animated"
-func (c *SiterestrictListCall) ImgType(imgType string) *SiterestrictListCall {
+//   "clipart" - clipart
+//   "face" - face
+//   "lineart" - lineart
+//   "news" - news
+//   "photo" - photo
+func (c *CseSiterestrictListCall) ImgType(imgType string) *CseSiterestrictListCall {
 	c.urlParams_.Set("imgType", imgType)
 	return c
 }
 
 // LinkSite sets the optional parameter "linkSite": Specifies that all
-// search results should contain a link to a particular
-// URL.
-func (c *SiterestrictListCall) LinkSite(linkSite string) *SiterestrictListCall {
+// search results should contain a link to a particular URL
+func (c *CseSiterestrictListCall) LinkSite(linkSite string) *CseSiterestrictListCall {
 	c.urlParams_.Set("linkSite", linkSite)
 	return c
 }
 
-// LowRange sets the optional parameter "lowRange": Specifies the
-// starting value for a search range. Use `lowRange` and
-// `highRange` to append an inclusive search range of
-// `lowRange...highRange`
-// to the query.
-func (c *SiterestrictListCall) LowRange(lowRange string) *SiterestrictListCall {
+// LowRange sets the optional parameter "lowRange": Creates a range in
+// form as_nlo value..as_nhi value and attempts to append it to query
+func (c *CseSiterestrictListCall) LowRange(lowRange string) *CseSiterestrictListCall {
 	c.urlParams_.Set("lowRange", lowRange)
 	return c
 }
 
-// Lr sets the optional parameter "lr": Restricts the search to
-// documents written in a particular language
-// (e.g.,
-// `lr=lang_ja`).
+// Lr sets the optional parameter "lr": The language restriction for the
+// search results
 //
-// 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)
-func (c *SiterestrictListCall) Lr(lr string) *SiterestrictListCall {
+// Possible values:
+//   "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)
+func (c *CseSiterestrictListCall) Lr(lr string) *CseSiterestrictListCall {
 	c.urlParams_.Set("lr", lr)
 	return c
 }
 
 // Num sets the optional parameter "num": Number of search results to
-// return.
-//
-// * Valid values are integers between 1 and 10, inclusive.
-func (c *SiterestrictListCall) Num(num int64) *SiterestrictListCall {
+// return
+func (c *CseSiterestrictListCall) Num(num int64) *CseSiterestrictListCall {
 	c.urlParams_.Set("num", fmt.Sprint(num))
 	return c
 }
 
 // OrTerms sets the optional parameter "orTerms": 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.
-func (c *SiterestrictListCall) OrTerms(orTerms string) *SiterestrictListCall {
+// 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
+func (c *CseSiterestrictListCall) OrTerms(orTerms string) *CseSiterestrictListCall {
 	c.urlParams_.Set("orTerms", orTerms)
 	return c
 }
 
-// Q sets the optional parameter "q": Query
-func (c *SiterestrictListCall) Q(q string) *SiterestrictListCall {
-	c.urlParams_.Set("q", q)
-	return c
-}
-
 // RelatedSite sets the optional parameter "relatedSite": Specifies that
-// all search results should be pages that are related to the
-// specified URL.
-func (c *SiterestrictListCall) RelatedSite(relatedSite string) *SiterestrictListCall {
+// all search results should be pages that are related to the specified
+// URL
+func (c *CseSiterestrictListCall) RelatedSite(relatedSite string) *CseSiterestrictListCall {
 	c.urlParams_.Set("relatedSite", relatedSite)
 	return c
 }
 
 // Rights sets the optional parameter "rights": Filters based on
-// licensing. Supported values include:
-// `cc_publicdomain`,
-// `cc_attribute`, `cc_sharealike`, `cc_noncommercial`, `cc_nonderived`
-// and
-// combinations of these. See
-// [typical
-// combinations](https://wiki.creativecommons.org/wiki/CC_Search
-// _integration).
-func (c *SiterestrictListCall) Rights(rights string) *SiterestrictListCall {
+// licensing. Supported values include: cc_publicdomain, cc_attribute,
+// cc_sharealike, cc_noncommercial, cc_nonderived and combinations of
+// these.
+func (c *CseSiterestrictListCall) Rights(rights string) *CseSiterestrictListCall {
 	c.urlParams_.Set("rights", rights)
 	return c
 }
 
-// Safe sets the optional parameter "safe": Search safety level.
-// Acceptable values are:
-//
-// * "active": Enables SafeSearch filtering.
-//
-// * "off": Disables SafeSearch filtering. (default)
+// Safe sets the optional parameter "safe": Search safety level
 //
 // Possible values:
-//   "safeUndefined"
-//   "active"
-//   "high"
-//   "medium"
-//   "off"
-func (c *SiterestrictListCall) Safe(safe string) *SiterestrictListCall {
+//   "high" - Enables highest level of safe search filtering.
+//   "medium" - Enables moderate safe search filtering.
+//   "off" (default) - Disables safe search filtering.
+func (c *CseSiterestrictListCall) Safe(safe string) *CseSiterestrictListCall {
 	c.urlParams_.Set("safe", safe)
 	return c
 }
 
 // SearchType sets the optional parameter "searchType": Specifies the
-// search type: `image`. If unspecified, results are limited
-// to
-// webpages.
-//
-// Acceptable values are:
-//
-// * "image": custom image search.
+// search type: image.
 //
 // Possible values:
-//   "searchTypeUndefined"
-//   "image"
-func (c *SiterestrictListCall) SearchType(searchType string) *SiterestrictListCall {
+//   "image" - custom image search
+func (c *CseSiterestrictListCall) SearchType(searchType string) *CseSiterestrictListCall {
 	c.urlParams_.Set("searchType", searchType)
 	return c
 }
 
-// SiteSearch sets the optional parameter "siteSearch": Specifies a
-// given site which should always be included or excluded from
-// results (see `siteSearchFilter` parameter, below).
-func (c *SiterestrictListCall) SiteSearch(siteSearch string) *SiterestrictListCall {
+// SiteSearch sets the optional parameter "siteSearch": Specifies all
+// search results should be pages from a given site
+func (c *CseSiterestrictListCall) SiteSearch(siteSearch string) *CseSiterestrictListCall {
 	c.urlParams_.Set("siteSearch", siteSearch)
 	return c
 }
 
 // SiteSearchFilter sets the optional parameter "siteSearchFilter":
 // Controls whether to include or exclude results from the site named in
-// the
-// `siteSearch` parameter.
-//
-// Acceptable values are:
-//
-// * "e": exclude
-//
-// * "i": include
+// the as_sitesearch parameter
 //
 // Possible values:
-//   "siteSearchFilterUndefined"
-//   "e"
-//   "i"
-func (c *SiterestrictListCall) SiteSearchFilter(siteSearchFilter string) *SiterestrictListCall {
+//   "e" - exclude
+//   "i" - include
+func (c *CseSiterestrictListCall) SiteSearchFilter(siteSearchFilter string) *CseSiterestrictListCall {
 	c.urlParams_.Set("siteSearchFilter", siteSearchFilter)
 	return c
 }
 
 // Sort sets the optional parameter "sort": The sort expression to apply
-// to the results.
-func (c *SiterestrictListCall) Sort(sort string) *SiterestrictListCall {
+// to the results
+func (c *CseSiterestrictListCall) Sort(sort string) *CseSiterestrictListCall {
 	c.urlParams_.Set("sort", sort)
 	return c
 }
 
 // Start sets the optional parameter "start": 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.
-func (c *SiterestrictListCall) Start(start int64) *SiterestrictListCall {
+// result to return
+func (c *CseSiterestrictListCall) Start(start int64) *CseSiterestrictListCall {
 	c.urlParams_.Set("start", fmt.Sprint(start))
 	return c
 }
@@ -3295,7 +1766,7 @@
 // Fields allows partial responses to be retrieved. See
 // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
 // for more information.
-func (c *SiterestrictListCall) Fields(s ...googleapi.Field) *SiterestrictListCall {
+func (c *CseSiterestrictListCall) Fields(s ...googleapi.Field) *CseSiterestrictListCall {
 	c.urlParams_.Set("fields", googleapi.CombineFields(s))
 	return c
 }
@@ -3305,7 +1776,7 @@
 // getting updates only after the object has changed since the last
 // request. Use googleapi.IsNotModified to check whether the response
 // error from Do is the result of In-None-Match.
-func (c *SiterestrictListCall) IfNoneMatch(entityTag string) *SiterestrictListCall {
+func (c *CseSiterestrictListCall) IfNoneMatch(entityTag string) *CseSiterestrictListCall {
 	c.ifNoneMatch_ = entityTag
 	return c
 }
@@ -3313,23 +1784,23 @@
 // Context sets the context to be used in this call's Do method. Any
 // pending HTTP request will be aborted if the provided context is
 // canceled.
-func (c *SiterestrictListCall) Context(ctx context.Context) *SiterestrictListCall {
+func (c *CseSiterestrictListCall) Context(ctx context.Context) *CseSiterestrictListCall {
 	c.ctx_ = ctx
 	return c
 }
 
 // Header returns an http.Header that can be modified by the caller to
 // add HTTP headers to the request.
-func (c *SiterestrictListCall) Header() http.Header {
+func (c *CseSiterestrictListCall) Header() http.Header {
 	if c.header_ == nil {
 		c.header_ = make(http.Header)
 	}
 	return c.header_
 }
 
-func (c *SiterestrictListCall) doRequest(alt string) (*http.Response, error) {
+func (c *CseSiterestrictListCall) doRequest(alt string) (*http.Response, error) {
 	reqHeaders := make(http.Header)
-	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200425")
+	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200427")
 	for k, v := range c.header_ {
 		reqHeaders[k] = v
 	}
@@ -3340,7 +1811,7 @@
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
 	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "customsearch/v1/siterestrict")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/siterestrict")
 	urls += "?" + c.urlParams_.Encode()
 	req, err := http.NewRequest("GET", urls, body)
 	if err != nil {
@@ -3357,7 +1828,7 @@
 // in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
 // check whether the returned error was because http.StatusNotModified
 // was returned.
-func (c *SiterestrictListCall) Do(opts ...googleapi.CallOption) (*Search, error) {
+func (c *CseSiterestrictListCall) Do(opts ...googleapi.CallOption) (*Search, error) {
 	gensupport.SetOptions(c.urlParams_, opts...)
 	res, err := c.doRequest("json")
 	if res != nil && res.StatusCode == http.StatusNotModified {
@@ -3388,93 +1859,118 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Returns metadata about the search performed, metadata about the custom\nsearch engine used for the search, and the search results. Uses a small set\nof url patterns.",
-	//   "flatPath": "customsearch/v1/siterestrict",
+	//   "description": "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.",
 	//   "httpMethod": "GET",
 	//   "id": "search.cse.siterestrict.list",
-	//   "parameterOrder": [],
+	//   "parameterOrder": [
+	//     "q"
+	//   ],
 	//   "parameters": {
 	//     "c2coff": {
-	//       "description": "Enables or disables [Simplified and Traditional Chinese\nSearch](https://developers.google.com/custom-search/docs/xml_results#chineseSearch).\n\nThe default value for this parameter is 0 (zero), meaning that the feature\nis enabled. Supported values are:\n\n* `1`: Disabled\n\n* `0`: Enabled (default)",
+	//       "description": "Turns off the translation between zh-CN and zh-TW.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "cr": {
-	//       "description": "Restricts search results to documents originating in a particular country.\nYou may use [Boolean\noperators](https://developers.google.com/custom-search/docs/xml_results_appendices#booleanOperators)\nin the cr parameter's value.\n\nGoogle Search determines the country of a document by analyzing:\n\n* the top-level domain (TLD) of the document's URL\n\n* the geographic location of the Web server's IP address\n\nSee the [Country Parameter\nValues](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCollections)\npage for a list of valid values for this parameter.",
+	//       "description": "Country restrict(s).",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "cx": {
-	//       "description": "The custom search engine ID to use for this request.",
+	//       "description": "The custom search engine ID to scope this search query",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "dateRestrict": {
-	//       "description": "Restricts results to URLs based on date. Supported values include:\n\n* `d[number]`: requests results from the specified number of past days.\n\n* `w[number]`: requests results from the specified number of past weeks.\n\n* `m[number]`: requests results from the specified number of past months.\n\n* `y[number]`: requests results from the specified number of past years.",
+	//       "description": "Specifies all search results are from a time period",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "exactTerms": {
-	//       "description": "Identifies a phrase that all documents in the search results must contain.",
+	//       "description": "Identifies a phrase that all documents in the search results must contain",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "excludeTerms": {
-	//       "description": "Identifies a word or phrase that should not appear in any documents in the\nsearch results.",
+	//       "description": "Identifies a word or phrase that should not appear in any documents in the search results",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "fileType": {
-	//       "description": "Restricts results to files of a specified extension. A list of file types\nindexable by Google can be found in Search Console [Help\nCenter](https://support.google.com/webmasters/answer/35287).",
+	//       "description": "Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, pdf, ...",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "filter": {
-	//       "description": "Controls turning on or off the duplicate content filter.\n\n* See [Automatic\nFiltering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering)\nfor more information about Google's search results filters. Note that host\ncrowding filtering applies only to multi-site searches.\n\n* By default, Google applies filtering to all search results to improve the\nquality of those results.\n\nAcceptable values are:\n\n* `0`: Turns off duplicate content filter.\n\n* `1`: Turns on duplicate content filter.",
+	//       "description": "Controls turning on or off the duplicate content filter.",
+	//       "enum": [
+	//         "0",
+	//         "1"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Turns off duplicate content filter.",
+	//         "Turns on duplicate content filter."
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "gl": {
-	//       "description": "Geolocation of end user.\n\n* The `gl` parameter value is a two-letter country code. The `gl` parameter\nboosts search results whose country of origin matches the parameter value.\nSee the [Country\nCodes](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCodes)\npage for a list of valid values.\n\n* Specifying a `gl` parameter value should lead to more relevant results.\nThis is particularly true for international customers and, even more\nspecifically, for customers in English- speaking countries other than the\nUnited States.",
+	//       "description": "Geolocation of end user.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "googlehost": {
-	//       "description": "**Deprecated**. Use the `gl` parameter for a similar effect.\n\nThe local Google domain (for example, google.com, google.de, or\ngoogle.fr) to use to perform the search.",
+	//       "description": "The local Google domain to use to perform the search.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "highRange": {
-	//       "description": "Specifies the ending value for a search range.\n\n* Use `lowRange` and `highRange` to append an inclusive search range of\n`lowRange...highRange` to the query.",
+	//       "description": "Creates a range in form as_nlo value..as_nhi value and attempts to append it to query",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "hl": {
-	//       "description": "Sets the user interface language.\n\n* Explicitly setting this parameter improves the performance and the\nquality of your search results.\n\n* See the [Interface\nLanguages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages)\nsection of [Internationalizing Queries and Results\nPresentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing)\nfor more information, and (Supported Interface\nLanguages)[https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages]\nfor a list of supported languages.",
+	//       "description": "Sets the user interface language.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "hq": {
-	//       "description": "Appends the specified query terms to the query, as if they were combined\nwith a logical AND operator.",
+	//       "description": "Appends the extra query terms to the query.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "imgColorType": {
-	//       "description": "Returns black and white, grayscale, transparent, or color images.\nAcceptable values are:\n\n* `\"color\"`\n\n* `\"gray\"`\n\n* `\"mono\"`: black and white\n\n* `\"trans\"`: transparent background",
+	//       "description": "Returns black and white, grayscale, or color images: mono, gray, and color.",
 	//       "enum": [
-	//         "imgColorTypeUndefined",
-	//         "mono",
-	//         "gray",
 	//         "color",
-	//         "trans"
+	//         "gray",
+	//         "mono"
+	//       ],
+	//       "enumDescriptions": [
+	//         "color",
+	//         "gray",
+	//         "mono"
 	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "imgDominantColor": {
-	//       "description": "Returns images of a specific dominant color. Acceptable values are:\n\n* `\"black\"`\n\n* `\"blue\"`\n\n* `\"brown\"`\n\n* `\"gray\"`\n\n* `\"green\"`\n\n* `\"orange\"`\n\n* `\"pink\"`\n\n* `\"purple\"`\n\n* `\"red\"`\n\n* `\"teal\"`\n\n* `\"white\"`\n\n* `\"yellow\"`",
+	//       "description": "Returns images of a specific dominant color: red, orange, yellow, green, teal, blue, purple, pink, white, gray, black and brown.",
 	//       "enum": [
-	//         "imgDominantColorUndefined",
+	//         "black",
+	//         "blue",
+	//         "brown",
+	//         "gray",
+	//         "green",
+	//         "orange",
+	//         "pink",
+	//         "purple",
+	//         "red",
+	//         "teal",
+	//         "white",
+	//         "yellow"
+	//       ],
+	//       "enumDescriptions": [
 	//         "black",
 	//         "blue",
 	//         "brown",
@@ -3492,124 +1988,222 @@
 	//       "type": "string"
 	//     },
 	//     "imgSize": {
-	//       "description": "Returns images of a specified size. Acceptable values are:\n\n* `\"huge\"`\n\n* `\"icon\"`\n\n* `\"large\"`\n\n* `\"medium\"`\n\n* `\"small\"`\n\n* `\"xlarge\"`\n\n* `\"xxlarge\"`",
+	//       "description": "Returns images of a specified size, where size can be one of: icon, small, medium, large, xlarge, xxlarge, and huge.",
 	//       "enum": [
-	//         "imgSizeUndefined",
-	//         "HUGE",
-	//         "ICON",
-	//         "LARGE",
-	//         "MEDIUM",
-	//         "SMALL",
-	//         "XLARGE",
-	//         "XXLARGE"
+	//         "huge",
+	//         "icon",
+	//         "large",
+	//         "medium",
+	//         "small",
+	//         "xlarge",
+	//         "xxlarge"
+	//       ],
+	//       "enumDescriptions": [
+	//         "huge",
+	//         "icon",
+	//         "large",
+	//         "medium",
+	//         "small",
+	//         "xlarge",
+	//         "xxlarge"
 	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "imgType": {
-	//       "description": "Returns images of a type. Acceptable values are:\n\n* `\"clipart\"`\n\n* `\"face\"`\n\n* `\"lineart\"`\n\n* `\"stock\"`\n\n* `\"photo\"`\n\n* `\"animated\"`",
+	//       "description": "Returns images of a type, which can be one of: clipart, face, lineart, news, and photo.",
 	//       "enum": [
-	//         "imgTypeUndefined",
 	//         "clipart",
 	//         "face",
 	//         "lineart",
-	//         "stock",
-	//         "photo",
-	//         "animated"
+	//         "news",
+	//         "photo"
+	//       ],
+	//       "enumDescriptions": [
+	//         "clipart",
+	//         "face",
+	//         "lineart",
+	//         "news",
+	//         "photo"
 	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "linkSite": {
-	//       "description": "Specifies that all search results should contain a link to a particular\nURL.",
+	//       "description": "Specifies that all search results should contain a link to a particular URL",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "lowRange": {
-	//       "description": "Specifies the starting value for a search range. Use `lowRange` and\n`highRange` to append an inclusive search range of `lowRange...highRange`\nto the query.",
+	//       "description": "Creates a range in form as_nlo value..as_nhi value and attempts to append it to query",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "lr": {
-	//       "description": "Restricts the search to documents written in a particular language (e.g.,\n`lr=lang_ja`).\n\nAcceptable values are:\n\n* `\"lang_ar\"`: Arabic\n\n* `\"lang_bg\"`: Bulgarian\n\n* `\"lang_ca\"`: Catalan\n\n* `\"lang_cs\"`: Czech\n\n* `\"lang_da\"`: Danish\n\n* `\"lang_de\"`: German\n\n* `\"lang_el\"`: Greek\n\n* `\"lang_en\"`: English\n\n* `\"lang_es\"`: Spanish\n\n* `\"lang_et\"`: Estonian\n\n* `\"lang_fi\"`: Finnish\n\n* `\"lang_fr\"`: French\n\n* `\"lang_hr\"`: Croatian\n\n* `\"lang_hu\"`: Hungarian\n\n* `\"lang_id\"`: Indonesian\n\n* `\"lang_is\"`: Icelandic\n\n* `\"lang_it\"`: Italian\n\n* `\"lang_iw\"`: Hebrew\n\n* `\"lang_ja\"`: Japanese\n\n* `\"lang_ko\"`: Korean\n\n* `\"lang_lt\"`: Lithuanian\n\n* `\"lang_lv\"`: Latvian\n\n* `\"lang_nl\"`: Dutch\n\n* `\"lang_no\"`: Norwegian\n\n* `\"lang_pl\"`: Polish\n\n* `\"lang_pt\"`: Portuguese\n\n* `\"lang_ro\"`: Romanian\n\n* `\"lang_ru\"`: Russian\n\n* `\"lang_sk\"`: Slovak\n\n* `\"lang_sl\"`: Slovenian\n\n* `\"lang_sr\"`: Serbian\n\n* `\"lang_sv\"`: Swedish\n\n* `\"lang_tr\"`: Turkish\n\n* `\"lang_zh-CN\"`: Chinese (Simplified)\n\n* `\"lang_zh-TW\"`: Chinese (Traditional)",
+	//       "description": "The language restriction for the search results",
+	//       "enum": [
+	//         "lang_ar",
+	//         "lang_bg",
+	//         "lang_ca",
+	//         "lang_cs",
+	//         "lang_da",
+	//         "lang_de",
+	//         "lang_el",
+	//         "lang_en",
+	//         "lang_es",
+	//         "lang_et",
+	//         "lang_fi",
+	//         "lang_fr",
+	//         "lang_hr",
+	//         "lang_hu",
+	//         "lang_id",
+	//         "lang_is",
+	//         "lang_it",
+	//         "lang_iw",
+	//         "lang_ja",
+	//         "lang_ko",
+	//         "lang_lt",
+	//         "lang_lv",
+	//         "lang_nl",
+	//         "lang_no",
+	//         "lang_pl",
+	//         "lang_pt",
+	//         "lang_ro",
+	//         "lang_ru",
+	//         "lang_sk",
+	//         "lang_sl",
+	//         "lang_sr",
+	//         "lang_sv",
+	//         "lang_tr",
+	//         "lang_zh-CN",
+	//         "lang_zh-TW"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Arabic",
+	//         "Bulgarian",
+	//         "Catalan",
+	//         "Czech",
+	//         "Danish",
+	//         "German",
+	//         "Greek",
+	//         "English",
+	//         "Spanish",
+	//         "Estonian",
+	//         "Finnish",
+	//         "French",
+	//         "Croatian",
+	//         "Hungarian",
+	//         "Indonesian",
+	//         "Icelandic",
+	//         "Italian",
+	//         "Hebrew",
+	//         "Japanese",
+	//         "Korean",
+	//         "Lithuanian",
+	//         "Latvian",
+	//         "Dutch",
+	//         "Norwegian",
+	//         "Polish",
+	//         "Portuguese",
+	//         "Romanian",
+	//         "Russian",
+	//         "Slovak",
+	//         "Slovenian",
+	//         "Serbian",
+	//         "Swedish",
+	//         "Turkish",
+	//         "Chinese (Simplified)",
+	//         "Chinese (Traditional)"
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "num": {
-	//       "description": "Number of search results to return.\n\n* Valid values are integers between 1 and 10, inclusive.",
-	//       "format": "int32",
+	//       "default": "10",
+	//       "description": "Number of search results to return",
+	//       "format": "uint32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "orTerms": {
-	//       "description": "Provides additional search terms to check for in a document, where each\ndocument in the search results must contain at least one of the additional\nsearch terms.",
+	//       "description": "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",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "q": {
 	//       "description": "Query",
 	//       "location": "query",
+	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "relatedSite": {
-	//       "description": "Specifies that all search results should be pages that are related to the\nspecified URL.",
+	//       "description": "Specifies that all search results should be pages that are related to the specified URL",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "rights": {
-	//       "description": "Filters based on licensing. Supported values include: `cc_publicdomain`,\n`cc_attribute`, `cc_sharealike`, `cc_noncommercial`, `cc_nonderived` and\ncombinations of these. See [typical\ncombinations](https://wiki.creativecommons.org/wiki/CC_Search_integration).",
+	//       "description": "Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "safe": {
-	//       "description": "Search safety level. Acceptable values are:\n\n* `\"active\"`: Enables SafeSearch filtering.\n\n* `\"off\"`: Disables SafeSearch filtering. (default)",
+	//       "default": "off",
+	//       "description": "Search safety level",
 	//       "enum": [
-	//         "safeUndefined",
-	//         "active",
 	//         "high",
 	//         "medium",
 	//         "off"
 	//       ],
+	//       "enumDescriptions": [
+	//         "Enables highest level of safe search filtering.",
+	//         "Enables moderate safe search filtering.",
+	//         "Disables safe search filtering."
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "searchType": {
-	//       "description": "Specifies the search type: `image`. If unspecified, results are limited to\nwebpages.\n\nAcceptable values are:\n\n* `\"image\"`: custom image search.",
+	//       "description": "Specifies the search type: image.",
 	//       "enum": [
-	//         "searchTypeUndefined",
 	//         "image"
 	//       ],
+	//       "enumDescriptions": [
+	//         "custom image search"
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "siteSearch": {
-	//       "description": "Specifies a given site which should always be included or excluded from\nresults (see `siteSearchFilter` parameter, below).",
+	//       "description": "Specifies all search results should be pages from a given site",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "siteSearchFilter": {
-	//       "description": "Controls whether to include or exclude results from the site named in the\n`siteSearch` parameter.\n\nAcceptable values are:\n\n* `\"e\"`: exclude\n\n* `\"i\"`: include",
+	//       "description": "Controls whether to include or exclude results from the site named in the as_sitesearch parameter",
 	//       "enum": [
-	//         "siteSearchFilterUndefined",
 	//         "e",
 	//         "i"
 	//       ],
+	//       "enumDescriptions": [
+	//         "exclude",
+	//         "include"
+	//       ],
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "sort": {
-	//       "description": "The sort expression to apply to the results.",
+	//       "description": "The sort expression to apply to the results",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "start": {
-	//       "description": "The index of the first result to return. The default number of results per\npage is 10, so `\u0026start=11` would start at the top of the second page of\nresults. **Note**: The JSON API will never return more than 100 results,\neven if more than 100 documents match the query, so setting the sum of\n`start + num` to a number greater than 100 will produce an error. Also note\nthat the maximum value for `num` is 10.",
+	//       "description": "The index of the first result to return",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     }
 	//   },
-	//   "path": "customsearch/v1/siterestrict",
+	//   "path": "v1/siterestrict",
 	//   "response": {
 	//     "$ref": "Search"
 	//   }
diff --git a/examples/customsearch.go b/examples/customsearch.go
index 8199dfd..4c6f077 100644
--- a/examples/customsearch.go
+++ b/examples/customsearch.go
@@ -27,7 +27,7 @@
 		log.Fatal(err)
 	}
 
-	resp, err := svc.Cse.List().Q(query).Cx(cx).Do()
+	resp, err := svc.Cse.List(query).Cx(cx).Do()
 	if err != nil {
 		log.Fatal(err)
 	}
diff --git a/google-api-go-generator/gen.go b/google-api-go-generator/gen.go
index 5c441f8..e4d1401 100644
--- a/google-api-go-generator/gen.go
+++ b/google-api-go-generator/gen.go
@@ -117,6 +117,11 @@
 	return fmt.Sprintf("API %s failed to compile:\n%v", e.api.ID, e.output)
 }
 
+// skipAPIGeneration is a set of APIs to not generate when generating all clients.
+var skipAPIGeneration = map[string]bool{
+	"customsearch:v1": true,
+}
+
 func main() {
 	flag.Parse()
 
@@ -183,6 +188,9 @@
 			return false
 		}
 	}
+	if skipAPIGeneration[a.ID] && *apiToGenerate == "*" {
+		return false
+	}
 	return *apiToGenerate == "*" || *apiToGenerate == a.ID
 }
 
